php中mysql语句加法_php中这个的mysql语句怎么写?

订单表:order

bVz3P3

订单商品表:order_goods

bVz3P6

也就是order_goods里存放着order里每个订单里的所有商品信息;

我需要找出符合条件的订单里有哪些商品怎么来写?

如:我要查找订单表内order_no等于20160804164336873986的订单,并且order与order_goods里所有字段都列出来。

回复内容:

订单表:order

bVz3P3

订单商品表:order_goods

bVz3P6

也就是order_goods里存放着order里每个订单里的所有商品信息;

我需要找出符合条件的订单里有哪些商品怎么来写?

如:我要查找订单表内order_no等于20160804164336873986的订单,并且order与order_goods里所有字段都列出来。

order_goods对于一个order_id有多个记录因此以order_goods左连order查询,连接查询语句执行效率不高得优化下

SELECT * FROM order_goods og LEFT JOIN order o ON o.id=og.order_id

SELECT * FROM order a JOIN IN order_goods b ON a.id=b.order_id WHERE a.order_no='20160804164336873986'

大概是这样,不知道写错没有

一对多,关联模型

看了楼上几位的回答,应该可以满足题主的要求了。对于有强迫症的我,我必须要说一下,题主查询的时候一定不要用*号,字段有多少就都写出来,字段名一样的重命名。

建议不要用join了,拆分成两个查询;另外尽量不要用SELECT *

我也有点强迫症了,最近一直接触索引,一看到mysql就想到索引,我想问下要查询的条件字段创建索引了吗?

还有看到上面的回答,先查询出order表中的数据,再用循环去查询每个的编号id对应的order_goods表中的数据,这样分开查询不会瞬间让mysql卡死(当然了这些是数据量特别大的时候会看出来,数据量少的话用left join我也不说啥)

多表查询。关联

select * from order,order_goods

where order.id = order_goods.order_id

and order.id = '20160804164336873986';

select * form order

inner join order_goods

on order.id = order_goods.order_id

where order.id = '20160804164336873986';

上面两种写法都是一样的,实现的是2个表连接.

3个表连接的写法也类似,比如查询ID为1的学生的课程和成绩:

SELECT * FROM `student`, `score`, `course`

WHERE `student`.`id` = `score`.`student_id`

AND `score`.`course_id` = `course`.`id`

AND `student`.`id` = 1;

SELECT * FROM `student`

INNER JOIN `score`

ON `score`.`student_id` = `student`.`id`

INNER JOIN `course`

ON `course`.`id` = `score`.`course_id`

WHERE `student`.`id` = 1;

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值