2017-04-15 75 views
0

我還沒有在這裏發佈太多內容,但我一直在使用該站點。多年來,我找到了我需要的或修改的例子。謝謝你。也許我今晚只是很累,但我需要使用PHP格式化MySQL數據。使用php傳輸mysql數據

我目前的查詢返回,看起來像這樣的數據:

league_id | complex_location  | complex_id | complex_field 

00000000015 | Savage Sports Complex | 00000000001 | Savage South 

00000000015 | Savage Sports Complex | 00000000001 | Savage North 

我使用下面的查詢,以獲得在上面的格式的數據:

查詢:

select a.league_id 
    , b.complex_location 
    , b.complex_id 
    , c.complex_field 
    from wp_lm_leagues a 
    left 
    join wp_lm_sports_complex b 
     on b.complex_id in(a.complex_id_1,a.complex_id_2 a.complex_id_3,a.complex_id_4,a.complex_id_5) 
left 
join wp_lm_sports_complex_fields c 
    on b.complex_id = c.complex_id 
where a.league_id = 15 

我希望數據如此轉置:

league_id | complex_location  | complex_id | complex_field | complex_field2 

00000000015| Savage Sports Complex | 00000000001 | Savage South | Savage North 
+0

您可以使用GROUP_CONCAT關閉,但是這些字段會在一列之間以逗號間隔。如果字段表中有另一列表示要將其放入哪一列,則可能(但並不美觀)得到您要查找的內容。使用GROUP_CONCAT並將它們拆分爲PHP可能會更好。這將代碼將更容易維護,並且如果您的數據更改不太可能中斷 –

+0

Btw,00000000015 = 15。 – Strawberry

+0

我冒昧地重寫您的查詢易讀性。但請注意,只要您列舉了列,您就可以確定您的模式設計不足 – Strawberry

回答

0

使用GROUP_CONCAT()函數。試試這個查詢

SELECT a.league_id, b.complex_location, b.complex_id, 
GROUP_CONCAT(c.complex_field SEPARATOR ', ') AS complex_field FROM wp_lm_leagues AS a 
LEFT JOIN wp_lm_sports_complex AS b ON 
(a.complex_id_1 = b.complex_id or a.complex_id_2 = b.complex_id or 
a.complex_id_3 = b.complex_id or 
a.complex_id_4 = b.complex_id or a.complex_id_5 = b.complex_id) 
LEFT JOIN wp_lm_sports_complex_fields AS c ON b.complex_id = c.complex_id 
WHERE a.league_id = 00000000015 GROUP BY a.league_id 
ORDER BY a.league_id, b.complex_location