2011-09-13 216 views
0

我遇到了子查询问题。此查询显示我需要进行查询的功能,我需要MYSQL子查询选择

SELECT *, 
open_hour_from - ((open_hour_day - 1) * 24 * 60) AS timeFrom, 
open_hour_to - ((open_hour_day - 1) * 24 * 60) AS timeTo, 
GROUP_CONCAT(open_hour_day) AS days 
FROM `open_hours` WHERE open_hour_connect_id = 2 
GROUP BY timeFrom, timeTo 
ORDER BY days 

这两个函数

open_hour_from - ((open_hour_day - 1) * 24 * 60) AS timeFrom, 
open_hour_to - ((open_hour_day - 1) * 24 * 60) AS timeTo, 

我知道,子查询可以返回只有一个值。但我怎样才能使用timeFrom和timeTo变量?我应该把HAVING放进去,我该怎么做?

SELECT *, 
    (SELECT GROUP_CONCAT(open_hour_day) 
     FROM ` WHERE open_hour_connect_id = 2 
     GROUP BY timeFrom, timeTo ORDER BY days) 
FROM connections 
+0

我编辑您的文章,因此第二个查询是可读的,但后来我注意到,子查询的FROM子句是不完整的。那是打算? –

+0

是的,这是有意的,因为我不知道我在哪里可以放两个功能。但我想我得到了我的答案。 – Luka

回答

0

我猜你真正想要的财产以后像

SELECT c.*, sub.* 
FROM 
    connections c 
    INNER JOIN 
    ( 
SELECT *, 
    open_hour_from - ((open_hour_day - 1) * 24 * 60) AS timeFrom, 
    open_hour_to - ((open_hour_day - 1) * 24 * 60) AS timeTo, 
    GROUP_CONCAT(open_hour_day) AS days 
    FROM `open_hours` WHERE open_hour_connect_id = 2 
    GROUP BY timeFrom, timeTo 
    ORDER BY days) sub 
ON c.days = sub.days