Как вывести все скидки из всех магазинов в торговом центре?

У меня есть следующие таблицы:


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 шт):

Автор решения: depozzyx

В комментариях уже предложили: если берёте данные из нескольких таблиц, то нужно указывать конкретную таблицу в 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 движок их требует, то придётся поставить их обратно

→ Ссылка