Редактирование: Теперь по какой-либо причине каждый продукт возвращается только один раз, а не в зависимости от того, сколько вариантов он имеет? Есть идеи? (Запрос я использую последний запрос я перечислил)Результаты, уменьшенные при добавлении четвертого столового соединения
Вот моя три таблицы объединяющего запроса
SELECT xp.productid, xp.product, xc.classid, xco.optionid, xco.option_name
FROM xcart_products xp
JOIN xcart_classes xc ON xp.productid = xc.productid and xc.class = 'Color'
JOIN xcart_class_options xco ON xc.classid = xco.classid
ORDER by xp.product DESC
Теперь здесь все отлично работает, я получаю около 2000 результатов, все организовано и расположено правильно ,
Теперь я хотел бы добавить четвертую таблицу для запуска подсчета числа xi.optionid за xi.id, но по какой-то причине я получаю около 200 результатов и не могу понять, почему. Вот запрос я пытаюсь запустить
SELECT xp.productid, xp.product, xc.classid, xco.optionid, xco.option_name, count(xi.optionid) as cnt
FROM xcart_products xp
INNER JOIN xcart_classes xc ON xp.productid = xc.productid AND xc.class = 'Color'
INNER JOIN xcart_class_options xco ON xc.classid = xco.classid
INNER JOIN xcart_images_D xi ON xi.optionid = xco.optionid
GROUP BY xp.product
ORDER by xp.product DESC
Вот основная схема для каждой из таблиц
xcart_products -
+ productid*
+ product
xcart_classes -
+ classid*
+ productid (xcart_products.productid)
xcart_class_options -
+ optionid*
+ classid (xcart_classes.classid)
+ option_name
xcart_images_D -
+ imageid*
+ optionid (xcart_class_options.optionid)
+ id (xcart_products.productid)
Запрос настоящее время я использую -
SELECT xp.productid, xp.product, xc.classid, xco.optionid, xco.option_name, count(xi.optionid) as cnt
FROM xcart_products xp
JOIN xcart_classes xc ON xp.productid = xc.productid AND xc.class = 'Color'
JOIN xcart_class_options xco ON xc.classid = xco.classid
LEFT JOIN xcart_images_D xi ON xi.optionid = xco.optionid
GROUP BY xp.product
ORDER by xp.product DESC
Каково количество записей в таблице изображений –
в первом запросе, у вас нет оператора GROUP BY. Кроме того, вы используете разные типы JOIN. –