soulhunter
Новичок
Вилы в трёхэтажном SQL запрое
Помогите, пожалуйста, исправить SQL запрос, и просьба предложения типа "переставь это местами" не писать, прошу помогать только действительно знающих людей. Есть две таблицы с такой структурой:
1) images_category
-------------------------
category_id
category_name
category_category
category_order
2) images
--------------
img_id
img_size
img_category
В этих таблицах есть и другие поля, но для даннго запроса они не играют роли. Запрос:
Эти запросом я хочу выбрать размер и количество всех изображений, находящихся в данной категории (img.img_category=cat.category_id), количество всех подкатегорий, находящихся в данной категории (cat2.category_category=cat.category_id), и размер и количество всех изображений, находящихся в этих подгалереях (cat2.category_id=img2.img_id). Но при выполнении данного запроса результаты получаются во много раз больше, чем реально количество данных. Думаю это происходит из-за того, что выборка и сложение идут по cat.category_id и по cat2.category_id, а группироска только по cat.category_id. Помогите, пожалуйста найти решение и переделать этот запрос так как нужно.
Помогите, пожалуйста, исправить SQL запрос, и просьба предложения типа "переставь это местами" не писать, прошу помогать только действительно знающих людей. Есть две таблицы с такой структурой:
1) images_category
-------------------------
category_id
category_name
category_category
category_order
2) images
--------------
img_id
img_size
img_category
В этих таблицах есть и другие поля, но для даннго запроса они не играют роли. Запрос:
PHP:
SELECT cat.*,
COUNT(cat2.category_id) AS category_categories,
SUM(img.img_size)+SUM(img2.img_size) AS category_size,
COUNT(img.img_id)+COUNT(img2.img_id) AS category_images
FROM images_category cat
LEFT JOIN images img ON (cat.category_id=img.img_category)
LEFT JOIN images_category cat2 ON (cat.category_id=cat2.category_category)
LEFT JOIN images img2 ON (cat2.category_id=img2.img_category)
WHERE cat.category_category=$MgId
GROUP BY cat.category_id ORDER BY cat.category_order ASC