Как объединить таблицу несколько раз и таблицу отношений? - PullRequest
0 голосов
/ 20 апреля 2011

Мне нужно объединить таблицу контактов (контакты), которая содержит имена несколько раз в запросе, чтобы получить как родительские, так и дочерние имена.Мне также нужно присоединиться к таблице, которая имеет отношение родитель-ребенок, чтобы я знал, какой ребенок принадлежит к какому из родителей (childs_caregiver).Приведенный ниже запрос возвращает мне имена родителей и потомков, но не привязывает правильных родителей к потомкам - он просто запускает все возможные записи.Я не знаю, как правильно соединить таблицу отношений между родителями и детьми (по childcaregiverID).

select c.contactid, ct.contactid,
 c.lastname as 'Parent Last Name', c.firstname as 'Parent First Name', c.address, c.city,
c.state, c.postalcode, c.homephone, c.workphone, ct.lastname as 'Child Last Name', ct.firstname as 'Child First Name'
from contacts c
inner join childs_caregivers cc on c.contactid=cc.caregiverid, 
contacts ct
inner join childs_caregivers cs on ct.contactid=cs.childid,
contacts cts
inner join childs_caregivers cv on cts.contactid=cv.childcaregiverid
where c.caregiver=1

Спасибо за внимание!

1 Ответ

0 голосов
/ 20 апреля 2011

Вы объединяете c, ct и cts с childs_caregivers, но не друг с другом.Если между несколькими contact записями существует иерархическая связь, вам необходимо выразить это в своем DDL (схеме).Добавьте столбец для parent_id и для «дочерних» записей укажите первичный ключ для contact, который является «родительским».Затем объедините таблицы contact в своем выражении WHERE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...