Как правильно составить Inner Join с обращением к одной и той же таблице - MySQL

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

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

не работает такой запрос
SELECT Наименование, Фирма,Плательщик, Город, Договор FROM список_договоров
INNER JOIN список_фирм
      ON список_договоров.ФирмаID=список_фирм.ID
INNER JOIN список_фирм
      ON список_договоров.ФирмаID=список_фирм.ID
INNER JOIN список_городов
      ON список_договоров.городID=список_городов.ID
      WHERE Фирма IN('ООО Фирма') AND Город IN ('Новосибирск')
Ошибка Not unique table/alias:'список_фирм' Так то же не хочет
SELECT Наименование, Фирма,Плательщик, Город, Договор FROM список_договоров
INNER JOIN список_фирм AS t1
      ON список_договоров.ФирмаID=t1.ID
INNER JOIN список_фирм AS t2
      ON список_договоров.ФирмаID=t2.ID
INNER JOIN список_городов
      ON список_договоров.городID=список_городов.ID
      WHERE Фирма IN('ООО Фирма') AND Город IN ('Новосибирск')
Ошибка Column 'Фирма' in field list is ambiguous

Решение задачи: «Как правильно составить Inner Join с обращением к одной и той же таблице»

textual
Листинг программы
SELECT t1.фирма AS f1,t2.фирма AS f2, Город
FROM список_договоров AS r      
INNER JOIN список_фирм AS t1 ON r.ФирмаID=t1.ID
INNER JOIN список_фирм AS t2 ON r.ПлательщикID=t2.ID
INNER JOIN список_городов  ON r.ГородID=список_городов.ID
      WHERE t1.фирма IN('ООО Фирма') AND Город IN ('Новосибирск')

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

В данном коде происходит объединение (JOIN) четырех таблиц: список_договоров, список_фирм, список_городов.

  1. SELECT - выбор нужных столбцов из результата запроса.
  2. t1.фирма AS f1,t2.фирма AS f2, Город - названия и значения столбцов, которые будут выбраны.
  3. FROM список_договоров AS r — начальная таблица для объединения (FROM).
  4. INNER JOIN список_фирм AS t1 ON r.ФирмаID=t1.ID — объединение по ID фирмы из таблицы список_фирм (INNER JOIN).
  5. INNER JOIN список_фирм AS t2 ON r.ПлательщикID=t2.ID — объединение по ID фирмы из таблицы список_фирм (INNER JOIN).
  6. INNER JOIN список_городов  ON r.ГородID=список_городов.ID — объединение по ID города из таблицы список_городов (INNER JOIN).
  7. WHERE t1.фирма IN('ООО Фирма') AND Город IN ('Новосибирск') — условие для фильтрации результатов (WHERE). Этот запрос вернет все договоры, где фирма является ООО Фирма и город является Новосибирском, и выведет только столбцы f1, f2 и Город.

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


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

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

9   голосов , оценка 4.111 из 5