Нужна подсказка - MySQL

Узнай цену своей работы

Формулировка задачи:

Привожу ссылку на песочницу sql http://sqlfiddle.com/#!9/2e93df/3 Подскажите пожалуйста, почему, если ввести 1й запрос, то возвращается одна строка, а если ввести 2й запрос, то возвращается 2е строки? Есть небольшое недопонимание того, что там происходит при объединении таблиц. Т.е. почему результат зависит от того, для какой таблицы делается условие agent_id=14? По идее в 2х таблицах поле agent_id указывает на одни и те же данные

1й запрос

SELECT * FROM leads
JOIN open_leads ON leads.id=open_leads.lead_id
JOIN customers ON customers.id=leads.customer_id
WHERE leads.agent_id=14

2й запрос

SELECT * FROM leads
JOIN open_leads ON leads.id=open_leads.lead_id
JOIN customers ON customers.id=leads.customer_id
WHERE open_leads.agent_id=14

Решение задачи: «Нужна подсказка»

textual
Листинг программы
SELECT * FROM leads
JOIN open_leads ON leads.id=open_leads.lead_id
JOIN customers ON customers.id=leads.customer_id

Объяснение кода листинга программы

Ваш запрос SQL выполняет объединение (JOIN) трех таблиц: leads, open_leads и customers. Он выбирает все строки из этих трех таблиц и объединяет их в одну результирующую таблицу.

  1. SELECT * FROM leads - выбираются все столбцы из таблицы leads.
  2. JOIN open_leads ON leads.id=open_leads.lead_id - выполняется объединение таблиц leads и open_leads по полю lead_id, которое совпадает с полем id в таблице leads.
  3. JOIN customers ON leads.customer_id=customers.id - выполняется объединение таблиц leads и customers по полю customer_id, которое совпадает с полем id в таблице customers. Таким образом, запрос выбирает все строки из таблиц leads, open_leads и customers, которые имеют соответствующие значения в полях lead_id и customer_id.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы