используя объединение, чтобы получить записи определенного ФК - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть таблица ParentsSchoolContact, в которой у parentId есть внешний ключ к parentId:

CREATE TABLE ParentsSchoolContact (
  contactId int NOT NULL AUTO_INCREMENT,
  parentId int NOT NULL,
  name varchar(60) NOT NULL,
  age varchar(60) NOT NULL,
  PRIMARY KEY (contactId),
  FOREIGN KEY (parentId) REFERENCES Parent(parentId)
);

, и у меня есть таблица родителей и контактов, которая поддерживает отношения между ребенком и родителем:

CREATE TABLE ParentAndContact (
  parentId int NOT NULL,
  contactId int NOT NULL,
  PRIMARY KEY (contactId, parentId)
);

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

SELECT c.name, c.age
FROM ParentsSchoolContact c 
INNER JOIN ParentAndKid pc ON pc.contactId = c.contactId 
    AND c.parentId = myParentVariable 
    AND pc.parentId = myParentVariable

хотел бы убедиться, что этот запрос не попадает вкакой-то случай, о котором вы могли подумать:)

спасибо!

1 Ответ

0 голосов
/ 25 апреля 2018

Для меня, я вижу, что таблица ParentAndContact является избыточной.Обычно сведения о родителях находятся в одной таблице, а сведения о ContactID / Kids - в другой таблице (с атрибутами, например, курсы, которые записали дети, сведения о детях).

Предполагая, что вы хотите получить все контакты, связанные с конкретным родителем, у которого есть свой идентификатор из доступных таблиц (ParentsSchoolContact, ParentAndContact) , Вы можете просто написать простоезапрос для получения информации из таблицы ParentsSchoolContact, как показано ниже : -

select contactId, parentId, name, age 
from ParentsSchoolContact
where parentId = myParentVariable 

Дайте мне знать, если я что-то пропустил.

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