order订单主表:id = 1 orderCode = 123456
orderDetailed 明细表数据:
id =2 order_id =1 product_id =3
id =3 order_id =1 product_id =4
product商品表:
id = 3 商品编码:product_code=pro123
id = 4 商品编码:product_code=pro124
输入框:商品编码:pro123
查询结果列表如下:订单编号
123456
如何根据商品编号找到这个订单? sql怎么写?
SELECT
`t`.*
FROM
`order` AS `t`
INNER JOIN `orderDetailed ` AS `t1` ON `t1`.`order_id ` = `t`.`id`
INNER JOIN `product` AS `t2` ON `t2`.`id ` = `t1`.`product_id `
WHERE
`t2`.`product_code` = #{product_code}
这个查询不太好,就是这个关联也会把明细的查出来,比如我一个订单有2个订单明细,用你这个sql查出,就会查出两条订单
本身这就是一个一对多的关系。一个商品按照逻辑来说本来就可能存在于多个订单中。你非要只显示一个。那就自己再添加过滤条件。
分开查 这边只查明细的id串 最后根据id去查明细
SELECT
t
.*,group_concat(t1.id)
FROM
order
AS t
INNER JOIN orderDetailed
AS t1
ON t1
.order_id
= t
.id
INNER JOIN product
AS t2
ON t2
.id
= t1
.product_id
WHERE
t2
.product_code
= #{product_code}
group by t1.
id`