2013-07-25 127 views
1

我有以下查詢:合併多個結果一行

SELECT location.dep_id, location.county, names.name, coords.lat_dec, coords.lon_dec, commodity.commod 
FROM location, names , coords, commodity 
WHERE location.dep_id=names.dep_id AND names.line=1 AND location.dep_id=coords.dep_id AND location.dep_id=commodity.dep_id AND commodity.import='primary' AND location.state_prov='nevada' 

的問題是,commodity.import列可以有「主」多場比賽。對於查詢輸出,我需要的是爲「主」多個值被放置在一個小區,使得結果「金」,「銀」和「unobtanium的」將在一個小區中的commod列中列出的「金銀unobtanium「,而不是返回3行。

回答

1

首先,你需要學會正確的聯接語法。這是更強大的(因爲它提供支持leftright外連接,例如);它使查詢更易於理解;它可以防止由於缺少連接條件而導致的錯誤。

回答你的問題是數據,然後組的值聚集在一起:

SELECT location.dep_id, location.county, names.name, coords.lat_dec, 
     coords.lon_dec, 
     group_concat(commodity.commod separator ' ') as commods 
FROM location join 
    names 
    on location.dep_id=names.dep_id join 
    coords 
    on location.dep_id=coords.dep_id join 
    commodity 
    on location.dep_id=commodity.dep_id 
WHERE AND names.line=1 AND commodity.import='primary' AND location.state_prov='nevada' 
group by location.dep_id; 

,我認爲這是正確的。第一個參數group_concat()應該是要結合在一起的commodity列。

如果有重複的,你可以用其刪除:

 group_concat(distinct commodity.commod separator ' ') as commod 
+0

感謝讓我接近。我相信你打算在group_concat函數中使用commodity.import而不是commodity.primary。我這樣做,我得到格式正確的記錄,但商品欄的值是不正確的。 「黃金白銀鉛」代替「主小學初級」 – Ditchmonkey

+0

我想你想'group.commod'爲小組concat。 –