sql查询怎么写这个订单查询?

mysql
#1

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怎么写?

#2
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}
#3

这个查询不太好,就是这个关联也会把明细的查出来,比如我一个订单有2个订单明细,用你这个sql查出,就会查出两条订单

#4

如何做到,多个明细,只查出一个订单?

#5

本身这就是一个一对多的关系。一个商品按照逻辑来说本来就可能存在于多个订单中。你非要只显示一个。那就自己再添加过滤条件。

#6

可以啊,大佬牛逼~!

#7

分开查 这边只查明细的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`