У меня есть 4 таблицы:
ad
image
placement
ad_placement - many to many intermediary table between ad and placement
изображение имеет FK для объявления
Структура выглядит так:
ad
id | url
1 http://
2 http://
3 http://
placement
id | name
1 name_1
1 name_2
ad_placement
id | ad_id | PLACEMENT_ID
1 1 1
2 1 2
3 2 2
image
id | image | ad_id
1 http:// 1
2 http:// 2
3 http:// 3
Я хочу получить поля, URL из рекламы и изображения из изображения, где размещение = name_1
'**' в запросе только для того, чтобы показать, что я имею в виду
SELECT A.id, A.url, I.image as image
FROM ad AS A LEFT JOIN (
SELECT ADP.ad_id FROM ad_placement *AS ADP*
JOIN placement AS P ON ADP.placement_id = P.id **WHERE P.name='name_1'**) AS AP ON A.id=AP.ad_id
LEFT JOIN ( SELECT ad_id,image FROM image) AS I ON I.ad_id = A.id
WHERE A.is_active=TRUE
Я получаю сообщение об ошибке, когда пытаюсь использовать where
в этой строке
JOIN ads_adplacement AS P ON ADP.adplacement_id = P.id WHE...
missing FROM-clause entry for table "adp"
удаление «Где» работает, но это не то, что мне нужно
Я добавил ADP в соответствии с предложением (курсивом см. **), получив те же результаты, например, где предложение игнорируется