У меня есть 2 стола. Один - Agent
, а другой - Agent_Contact
. Таблица Agent_Contact
должна содержать контактную информацию Agent
.Извлечь только одну запись из ОДНО-МНОГО отношений
Отношения с Agent
к Agent_Contact
является One-To-Many
, который означает Agent
может иметь много Agent_Contacts
Agent_Contact
держит Foreign Key
из Agent
.
Может быть Agents
, у кого нет Agent_Contact
.
Теперь, пожалуйста, ознакомьтесь с нижеследующим кодом.
SELECT Agent.*,
Agent_Contact.*
FROM Agent
LEFT JOIN Agent_Contact ON Agent.idAgent = Agent_Contact.idAgent
Теперь это возвращает все Agents
с их Agent_Contact
с (если они есть). Однако представьте себе, что один Agent
получил 15 Agent_Contact
s, после чего он вернется 15 строк.
Это не то, что я хочу. Один раз Agent_Contact
за один Agent
достаточно. Но как я могу изменить вышеупомянутый запрос sql для достижения этой задачи?
Вместо JOIN используется подзапрос для получения данных Agent_Contact. –
Очень рекомендую внутреннее соединение вместо левого соединения. – HddnTHA
@HddnTHA И почему? Вы понимаете, почему OP использует «LEFT JOIN»? Подсказка: «Там могут быть агенты, у которых также нет агента-агента». – sjagr