У меня есть два типа таблиц: одна для хранения текста и т. Д., Другая для хранения информации об изображении,
pages table
,
pg_id pg_content parent_id
10 xxx 3
11 xxx 3
12 xxx 3
image table
,
img_id pg_id img_order cat_id
1 10 1 1
2 10 1 2
3 10 2 2
4 11 1 1
Поэтому я хочу перечислить все страницы с изображением img_order
1 только из cat_id
1, но я получаю дублированные строки, когда на странице есть изображения в cat_id
2,
SELECT*
FROM root_pages
LEFT JOIN root_images_pages
ON root_images_pages.pg_id = root_pages.pg_id
WHERE root_pages.parent_id = '3'
AND root_pages.pg_id != '3'
AND (root_images_pages.img_order = '1' OR root_images_pages.img_id is NULL)
ORDER BY root_pages.pg_created DESC
LIMIT 12
Как это исправить?
Я хочу получить результат,
pg_id pg_content parent_id img_id pg_id img_order cat_id
10 xxx 3 1 10 1 1
11 xxx 3 4 11 1 1
12 xxx 3 null null null null
РЕДАКТИРОВАТЬ:
Мне нужнодобавьте эту строку ниже к запросу, в противном случае страница без изображений не может быть отображена,
AND (i.img_order = '1' OR i.img_id is NULL)
Так вот,
SELECT*
FROM root_pages p
LEFT JOIN root_images_pages i
ON i.pg_id = p.pg_id and i.cat_id = 1
WHERE p.parent_id = '3'
AND p.pg_id != '3'
AND p.pg_hide != '1'
AND (i.img_order = '1' OR i.img_id is NULL)
ORDER BY p.pg_created DESC
LIMIT 12