Запрос:
SELECT `tab`.`id`, COUNT(*) AS `count`
FROM `tab`,`tab2`
WHERE `tab2`.`id2` IN ('6','7')
AND `tab2`.`id3`='5'
AND `tab2`.`id4`=`tab`.`id` GROUP BY `tab2`.`id4`
ORDER BY `count` DESC
Т.е. мы поискали строки в `tab2` у которых `id2`=6 и/или `id2`=7
затем сгруппировали по `id4`:
В результате получили таблицу строк у которых
либо
`count`=1 - т.е. нашлось или 6 или 7.
либо
`count`=2 - т.е. нашлось и 6 и 7.
Затем сортирую, так, чтоб те у кого совпадений больше `count`=2 - были на самом верху.
Но, иногда, может так быть, что `count`=2 не будет, не будет 2-х совпадений, когда, например `tab2`.`id2`=7 вообще не найдено, то
нет смысла делать ни GROUP BY `tab2`.`id4` ни ORDER BY `count`, можно ли в этом запросе как-то определить такую логику? Т.е. делать группировку + сортировку только если было >1 совпадений для `tab2`.`id2`.
Спасибо.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.