2014-09-20 101 views
0
SELECT j.departure, stopDepartures.* 
FROM journey j 
JOIN journey_day ON journey_day.journey = j.id 
JOIN service ON service.id = j.service 
JOIN pattern ON j.pattern = pattern.id 
JOIN (
    SELECT section, pl.from_stop 
    FROM pattern_link pl 
    WHERE pl.section = section 
) stopDepartures ON stopDepartures.section = pattern.section 
WHERE service.id = "59924-44-X4-B-y10-2" AND journey_day.day = 1 AND pattern.direction = "outbound" AND DATE(NOW()) BETWEEN service.date_start AND service.date_end 
GROUP BY j.id 
ORDER BY departure ASC; 

目前,上述查詢看起來像結果:子查詢選擇行作爲列(支點)

`departure` | `section` | `from_stop` 
    07:00 some_var_id some_var_id 

stopDepartures加入真的返回許多from_stop領域每個section,但我只會看到第一個。我如何更改stopDepartures連接,以便它像數據透視表一樣工作,並將每個from_stop作爲列返回? (很多列,而不是每個第一個值爲1列from_stop值)

回答

0

如果我理解正確,這可能會做你想做的。相反的:

SELECT j.departure, stopDepartures.* 

務必:

SELECT j.departure, group_concat(from_stop) 

這使得在一個逗號分隔的列表中的所有值。這不是每個專欄的獨立專欄,但它可以做你需要的。

+0

感謝您的回答,戈登。可悲的是,我確實需要在自己的專欄中停下來,我已經在這裏重新發布了一個更清晰的問題:http://stackoverflow.com/questions/25948622/mysql-pivot-style-row-column-results-in-subquery – jskidd3 2014-09-20 12:11:20