Как правильно составить Inner Join с обращением к одной и той же таблице - MySQL
Формулировка задачи:
не работает такой запрос
Ошибка Not unique table/alias:'список_фирм'
Так то же не хочет
Ошибка Column 'Фирма' in field list is ambiguous
SELECT Наименование, Фирма,Плательщик, Город, Договор FROM список_договоров INNER JOIN список_фирм ON список_договоров.ФирмаID=список_фирм.ID INNER JOIN список_фирм ON список_договоров.ФирмаID=список_фирм.ID INNER JOIN список_городов ON список_договоров.городID=список_городов.ID WHERE Фирма IN('ООО Фирма') AND Город IN ('Новосибирск')
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 ('Новосибирск')
Решение задачи: «Как правильно составить 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) четырех таблиц: список_договоров, список_фирм, список_городов.
- SELECT - выбор нужных столбцов из результата запроса.
- t1.фирма AS f1,t2.фирма AS f2, Город - названия и значения столбцов, которые будут выбраны.
- FROM список_договоров AS r — начальная таблица для объединения (FROM).
- INNER JOIN список_фирм AS t1 ON r.ФирмаID=t1.ID — объединение по ID фирмы из таблицы список_фирм (INNER JOIN).
- INNER JOIN список_фирм AS t2 ON r.ПлательщикID=t2.ID — объединение по ID фирмы из таблицы список_фирм (INNER JOIN).
- INNER JOIN список_городов ON r.ГородID=список_городов.ID — объединение по ID города из таблицы список_городов (INNER JOIN).
- WHERE t1.фирма IN('ООО Фирма') AND Город IN ('Новосибирск') — условие для фильтрации результатов (WHERE).
Этот запрос вернет все договоры, где фирма является ООО
Фирма
и город является Новосибирском, и выведет только столбцыf1
,f2
иГород
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д