Turiu tokią užklausą:
SELECT SQL_CALC_FOUND_ROWS
a.*
, pl.`name` as pname, al.`name` as aname, a.id_product, ac.id_attribute, COALESCE(COUNT(c.id_code), 0) as waiting_codes
FROM `bpg_product` a
LEFT JOIN `bpg_product_attribute` pa ON (pa.id_product = a.id_product)
LEFT JOIN `bpg_product_attribute_combination` ac ON (ac.id_product_attribute = pa.id_product_attribute)
LEFT JOIN `bpg_product_lang` pl ON (a.id_product = pl.id_product AND pl.id_shop = 1 AND pl.id_lang = 2)
LEFT JOIN `bpg_attribute_lang` al ON (ac.id_attribute = al.id_attribute AND al.id_lang = 2)
LEFT JOIN `bpg_code` c ON (a.id_product = c.id_code_product AND IFNULL(ac.id_attribute, 0) = c.id_product_attribute AND c.active = 1)
WHERE 1 AND a.ctype = "virtual"
ORDER BY a.`id_product` ASC LIMIT 0,50
Po paskutinio LEFT JOIN eilutės pridėjimo sąrašas sutrumpėjo iki 1-os eilutės. Kaip matot, jei prekė neturi kodo, ją turi rodyti su waiting_codes = 0. Kur galėtų būti problema?