Соединение двух столов

Я пытаюсь соединить столбец dataofbirth, который находится в таблице studentdetails, с другой таблицей, называемой таблицей колледжа, мне нужны данные для рождения студента во второй таблице. Вот мой запрос.

  $result = mysqli_query($con,"SELECT `DateofBirth` FROM  `studentdetails` INNER JOIN `college`
ON `studentdetails`.StudentID = college.StudentID")or die ("Error: ".mysqli_error($con)");

Поэтому, когда я получу свой массив для второй таблицы, я смогу получить их данные о рождении ученика, не присоединяясь к ним физически.
Может кто-нибудь определить, что не так с моим синтаксисом?

Спасибо

-3

Решение

Если вы хотите объединить две таблицы, вы должны предоставить список столбцов из обеих таблиц, которые вы хотите включить в объединенную / объединенную таблицу. Так:

Попробуйте это (заменив бит [добавить другие столбцы ..] другими столбцами, которые вы, возможно, захотите включить. И обратите внимание на псевдонимы таблиц, как они используются:

  $result = mysqli_query($con,"SELECT s.DateofBirth, c.StudentID, [add other columns from college table here...] FROM  studentdetails sd INNER JOIN college c
ON sd.StudentID = c.StudentID")or die ("Error: ".mysqli_error($con)");

о, и вы можете использовать mysqli вместо старых, устаревших, некрасивых, медленных, небезопасных, суицидальных мыслей, вызывающих расширение mysql_;)

1

Другие решения

Так и должно быть (из комментария: Дата рождения существует только в студенческих деталях)

  $result = mysqli_query($con,"SELECT sd.DateofBirth FROM  studentdetails as sd INNER JOIN college as c
ON sd.StudentID = c.StudentID")or die ("Error: ".mysqli_error($con)");
0

Учитывая, что мы родились только один раз (кроме фениксов), отношения между студентами и датой их рождения должны быть 1:1 отношения. Другими словами, столбец DateOfBirth может быть объявлено в college Таблица. Затем, чтобы выбрать дату их рождения, вы можете просто сделать:

select DateOfBirth
from   college
where  StudentID = :id

Но я вижу, что у вас уже есть другая таблица для хранения даты их рождения, чтобы вы могли сделать объединение, чтобы выбрать дату их рождения:

select d.DateOfBirth
from   college        c,
studentdetails d
where  c.StudentID = d.StudentID;

Или же:

select d.DateofBirth
from   studentdetails d
inner join college as c
on d.StudentID = c.StudentID;

Но эти запросы выше исключают студентов без записей в studentdetails из вашего результата. Чтобы выбрать всех студентов с их соответствующей датой рождения, вы можете сделать:

select c.StudentID,
s.DateOfBirth
from   studentdetails d
right join college c
on d.StudentID = c.StudentID;

это right join запрос получает все студенты, даже если у них нет даты рождения в studentdetails Таблица (right join CMD на столе колледжа).

Вы можете сами выяснить, что является для вас лучшей альтернативой, но я рекомендую вам нормализовать этот столбец с моделью данных. DateOfBirth внутри college Таблица.

0
По вопросам рекламы [email protected]