php中这个的mysql语句怎么写?
订单表:order
订单商品表:order_goods
也就是order_goods里存放着order里每个订单里的所有商品信息;
我需要找出符合条件的订单里有哪些商品怎么来写?
如:我要查找订单表内order_no等于20160804164336873986的订单,并且order与order_goods里所有字段都列出来。
回复内容:
订单表:order
订单商品表:order_goods
也就是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中怎么把数组作为sql查询语句的条件
-
PHP分页代码中的SQL语句可以换个写法_MySQL
-
PHP自动安排考试座位号,怎么写一个随机写入的语句
-
mysql - PHP 数据库,一个表中有多个用户的多个记录,如何获取这个表中的每个用户的最值
-
php-mysql 问题笔记一——在命令行中可以执行的sql语句,无法从php页面页面执行!,php-mysqlsql_PHP教程
-
php的pdo中对双引号做了什么处理么,为什么这个语句可以执行通过
-
mysql - PHP 数据库,一个表中有多个用户的多个记录,如何获取这个表中的每个用户的最值
-
小白继续。PHP中怎么把数组作为sql查询语句的条件
-
这个如果用mysql语句来替换,请问要怎么写 ?
-
求教个mysql基础有关问题.(PHP中)复制一条id为a的记录到同一张表里,生成一条新的记录,在此过程中修改一些字段的值,该怎么写