Моя цель:
выбирать записи с помощью has_t
"1"
всякий раз, когда они есть, если их нет, выбрать запись с помощью has_t
"2"
.Все оставшиеся записи для соответствующего посещения должны идти внутри столбца «more_items»
Проблема:
Текущий код сначала выбирает has_t
"2"
вместо has_t
"1"
SELECT iu.*,`t`.`o_id`,
v.GID,v.MSID,
GROUP_CONCAT(DISTINCT CONCAT(iu.item_no,'|##|',t.s_amount,'|##|',t.e_item_ordered,'|##|',IFNULL(t.e_item_name,'No-Name-In-T-TBL'),'|##|',IFNULL(t.com,''),'|##|',IFNULL(t.post_s_e,''),'|##|',IFNULL(t.o_id,'')) SEPARATOR '|#|') AS MoreItems,
t.post_s_e,t.e_item_name,t.click_time
FROM `items_unique` iu
LEFT JOIN visits v ON v.id = iu.visit_id
LEFT JOIN trans t ON t.visit_id = iu.visit_id AND t.e_item_ordered = iu.e_item_ordered
WHERE iu.product_id = $PID AND has_t > 0 AND (t.com >= 10 OR has_t = 1)
GROUP BY `v`.`id` ORDER BY v.visited_at DESC LIMIT 10
Примечание. Предыдущая версия кода, похоже, сделала это с использованием несовместимого порядка подзапросов SQL, который в любом случае не работает на MariaDB:
ORDER BY `iu`.`has_t` LIMIT 18446744073709551615