23

我有两个 MySQL 表、产品和条形码。一个产品可能有多个条形码,这就是为什么我把它分开到它自己的表格中。

这是我尝试过的(使用 CodeIgnighter 的 Active Record,但我在这里写出了查询,这意味着如果有错字,它可能不在我的实际查询中):

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

但这只是返回一行包含每个产品的所有条形码concat,我怎样才能为每个产品获得一行带有产品条形码的行?

我宁愿不必拆分它,但如果没有解决方案,join请告诉我。

4

1 回答 1

44

你需要一个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(),一个聚合函数)。因此它只返回一行,汇总所有数据。

于 2013-07-16T02:16:28.993 回答