SELECT
op.sub_order_id,
s.supplier_id,
GROUP_CONCAT(opb.box_id SEPARATOR ','),
op.delivery_country
FROM
order_p op
INNER JOIN
supplier s ON s.supplier_id = op.supplier_name
LEFT JOIN
order_boxes opb ON op.sub_order_id = opb.sub_order_id
WHERE
op.order_active=0
AND op.ship_date>='2013-01-01'
AND op.ship_date<='2013-04-24'
ORDER BY op.ship_date DESC
我不太擅长加入,所以请耐心等待。
我有这个查询,我需要从order
给定日期范围之间的表中选择所有数据,以便表中存在匹配的供应商映射supplier
。现在连同这些信息,我还需要获取任何框,如果它存在于order_boxes
由 sub_order_id 字段链接的表中。
现在,如果我只是加入订单和供应商表,我会得到大约 1000 条记录的正确记录集,但是一旦我尝试添加到 box 表中,我只会得到一行。我猜这是因为 box 表中只有一条记录,但我需要它从 order 表中获取所有记录以及 box 表。如果我尝试INNER JOIN
而不是LEFT JOIN
只获得在框表中映射的匹配子订单的一条记录,但是使用左连接,我将获得日期范围内的第一条记录,而与框表中的 sub_order_id 和值无关。
请帮忙。另外,如果您需要更多信息,请告诉我。
编辑:很抱歉我之前没有发布完整的内容,但我认为问题出在 GROUP_CONCAT 上,它将整个记录集分组,因为我只想对 box 表中的记录进行分组....也许我应该使用子查询?
电流输出
179-1 | 2 | 2,4,3 | Canada
预期产出
168-1 | 1 | | Texas
.....
......
179-1 | 2 | 2,4,3 | Canada
.....
......