2013-12-03 3 views
0

У меня есть эта проблема, и я не смог понять, как я могу это сделать.Умножает SQL-соединения

У меня есть таблица под названием «родители» и стол под названием «студенты»

Родители таблица

идентификатор, имя, фамилия и тип. «Тип» качает нечто вроде «мать» или «отец».

Студенты таблица имеет

ID, имя, фамилия, motherid (родители стол), fatherid (таблица родителей).

Как я могу сделать запрос с JOINS, который возвращает имя матери и имя Отца? И зная, что родители могут иметь несколько детей, и, очевидно, студент может иметь двух родителей, мать и отец ...

Я надеюсь, что я объяснил это хорошо, спасибо заранее

ответ

1

Это простой способ сделать что вы спрашиваете:

(
    SELECT  KIDS1.id as student_id 
       KIDS1.name as student_firstname 
       KIDS1.lastname as student_lastname 
       MOMS.id as parent_id 
       MOMS.name as parent_firstname 
       MOMS.lastname as parent_lastname 
       MOMS.type as parent_type 
    FROM  students KIDS1 
    JOIN  parents MOMS ON KIDS1.motherid = MOMS.id 
) 
UNION 
(
    SELECT  KIDS2.id as student_id 
       KIDS2.name as student_firstname 
       KIDS2.lastname as student_lastname 
       DADS.id as parent_id 
       DADS.name as parent_firstname 
       DADS.lastname as parent_lastname 
       DADS.type as parent_type 
    FROM  students KIDS2 
    JOIN  parents DADS ON KIDS2.fatherid = DADS.id 
) 

Я обновил мой вопрос сейчас, так что вы можете получить список родителей и какого рода родителей она (мать или отец). В этом запросе не будут перечислены ученики, у которых нет родителя, указанного в вашей системе. Вам нужно будет изменить или написать другой запрос, чтобы определить, у каких учеников нет родителя.

+0

Он работал, но есть что-то, что мы должны исправить. Он возвращает три столбца с одинаковыми именами, мне нужно знать, что такое имя MOTERs и имя отца Прямо сейчас он возвращает что-то вроде имя | lastname | имя | родительский тип | имя | parenttype Как вы можете видеть, есть столбцы с тем же именем, как я могу сделать его похожим РЕЗУЛЬТАТ: имя | lastname | dadname | momname | – JuanBonnett

+0

@JuanBonnett использовать псевдоним столбца с использованием 'AS' в' SELECT', например 'SELECT MOMS.Name AS MomName'. – user2989408

+0

Он должен будет сделать больше, чем это. Теперь, когда я подумал об этом, запрос 'UNION' будет более полезен в этом случае. Работа над изменением моего запроса для вас. –

0

Вы можете сделать это с помощью двух внутренних соединений (не уверен, что это лучший способ) Ваш два присоединяется будет выглядеть примерно так:

Select students.name, parents.name 
FROM students 
INNER JOIN Parents 
ON motherid = Parents.id 
INNER JOIN Parents 
ON fatherid = Parents.id 
Смежные вопросы