Как вывести все скидки из всех магазинов в торговом центре?
У меня есть следующие таблицы:
Places
Id
Name
Floors
Id
PlaceId
Areas
Id
FloorId
InformationContents
Id
AreaId
Name
Description
Мне необходимо вывести всю рекламу (InformationContent) из всех магазинов на всех этажах в торговом центре. Помогите, пожалуйста, запрос написать, а то я только с орм умею работать
Я написал следующий запрос:
select "Id", "Name", "AreaId", "Description", "FileId"
from "InformationСontents"
inner join "Areas" A on A."Id" = "InformationСontents"."AreaId"
inner join "Floors" F on F."Id" = A."FloorId"
inner join "Places" P on P."Id" = F."PlaceId"
Но, к сожалению, ловлю ошибку - неоднозначная ссылка на столбец "Id"
Ответы (1 шт):
В комментариях уже предложили: если берёте данные из нескольких таблиц, то нужно указывать конкретную таблицу в SELECT. Правда не очень ясен смысл запроса, но если проблема только в ошибке неоднозначная ссылка на столбец "Id", то это должно сработать:
SELECT
InformationСontents.Id, InformationСontents.Name,
InformationСontents.AreaId, InformationСontents.Description,
InformationСontents.FileId
FROM InformationСontents
INNER JOIN Areas ON Areas.Id = InformationСontents.AreaId
INNER JOIN Floors ON Floors.Id = Areas.FloorId
INNER JOIN Places ON Places.Id = Floors.PlaceId
Я также отформатировал код, мне кажется так он лучше читается. Также убрал все кавычки, насколько я знаю они не обязательны, но если ваш sql движок их требует, то придётся поставить их обратно