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

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

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

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

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

textual
Листинг программы
  1. SELECT t1.фирма AS f1,t2.фирма AS f2, Город
  2. FROM список_договоров AS r      
  3. INNER JOIN список_фирм AS t1 ON r.ФирмаID=t1.ID
  4. INNER JOIN список_фирм AS t2 ON r.ПлательщикID=t2.ID
  5. INNER JOIN список_городов  ON r.ГородID=список_городов.ID
  6.       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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут