2012-07-01 4 views
3

Это мой запросMySQL COUNT (*) GROUP BY HOWING COUNT =?

SELECT COUNT(*) as total, toys, date FROM T1 
WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0') 
UNION 
SELECT COUNT(*) as total, toys, date FROM T2 
WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0') 
UNION 
SELECT COUNT(*) as total, toys, date FROM T3 
WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0') 
GROUP BY RoomType 
HAVING COUNT(total) = 4 

Выходной результат

count Toys   date 
3 Bibi  2012-06-26 
4 Baba   2012-06-26 

Как я могу получить MYSQL, чтобы показать результаты только для подсчета = 4

ответ

4
SELECT * FROM (
    SELECT COUNT(*) as total, toys, date FROM T1 
    WHERE (date >= '2012-06-26' AND date < '2012-06-30') AND (Avail > '0') 
    GROUP BY RoomType 
    UNION 
    SELECT COUNT(*) as total, toys, date FROM T2 
    WHERE (date >= '2012-06-26' AND date < '2012-06-30') AND (Avail > '0') 
    GROUP BY RoomType 
    UNION 
    SELECT COUNT(*) as total, toys, date FROM T3 
    WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0') 
    GROUP BY RoomType) AS src 
WHERE total = 4; 

Пожалуйста, обратите внимание, что для надлежащего groupping данных вы должны иметь все столбцы либо в предложении GROUP BY, либо в качестве аргументов для агрегатных функций. Функция MySQL позволяет вам избежать этого ограничения, но это может привести к неожиданным результатам.

4

Вам нужна группа, а затем объединение результата.

SELECT COUNT(*) as total, toys, date FROM T1 
WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0') 
GROUP BY RoomType HAVING COUNT(*) = 4 
UNION 
SELECT COUNT(*) as total, toys, date FROM T2 
WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0') 
GROUP BY RoomType HAVING COUNT(*) = 4 
UNION 
SELECT COUNT(*) as total, toys, date FROM T3 
WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0') 
GROUP BY RoomType HAVING COUNT(*) = 4 
+0

Благодарим вас, oooooooooooooooooooo ВЫ ЛУЧШЕЕ !!!!!!!!!!!!!!!!! – user1478893