2013-07-16 43 views
11

我有兩個MySQL表,產品和條形碼。一個產品可能有多個條形碼,這就是爲什麼我將它分離到自己的表格中的原因。MySQL左側連接多行,如何結合左側每行一行(與我想從右側表格拼接的字段)?

這是我試了一下(用CodeIgnighter的活動記錄,但是我在這裏寫出來的查詢,它可能不會在我的實際查詢的意思,如果有一個錯字):

SELECT products.id, products.snipe_price, group_concat(barcodes.barcode) as barcodes FROM products LEFT JOIN barcodes on barcodes.product_id = products.id 

但是,這只是返回一行與每個產品的所有條形碼concat ed,我怎樣才能得到每個產品與產品條形碼一行?

我寧願不必將其拆分,但如果join沒有解決方案,請讓我知道。

回答

23

你需要一個group by

SELECT products.id, products.snipe_price, group_concat(barcodes.barcode) as barcodes 
FROM products LEFT JOIN 
    barcodes 
    on barcodes.product_id = products.id 
group by products.id; 

沒有group by,MySQL的解釋整個查詢爲聚合查詢彙總所有的數據(因爲group_concat()存在,聚合函數的)。因此它只返回一行,總結所有數據。

+0

很棒!如果它生成json格式的列表 –

+2

@eyal_katz會更好。 。 。如果你有問題,你應該把它作爲一個問題而不是一個評論。 –