Home  >  Article  >  Backend Development  >  How to write this mysql statement in php?

How to write this mysql statement in php?

WBOY
WBOYOriginal
2016-08-08 09:06:461007browse

Order table: order
How to write this mysql statement in php?
Order product table: order_goods
How to write this mysql statement in php?
That is, order_goods stores all the product information in each order in the order;
I need to find out which products are in the eligible orders and how to get them Write?
For example: I want to find the order with order_no equal to 20160804164336873986 in the order table, and all fields in order and order_goods are listed.

Reply content:

Order table: order
How to write this mysql statement in php?
Order product table: order_goods
How to write this mysql statement in php?
That is, order_goods stores all the product information in each order in the order;
I need to find out which products are in the eligible orders and how to get them Write?
For example: I want to find the order with order_no equal to 20160804164336873986 in the order table, and all fields in order and order_goods are listed.

order_goods has multiple records for one order_id. Therefore, order_goods is left connected to the order query. The execution efficiency of the connection query statement is not high and needs to be optimized

<code>SELECT * FROM order_goods og LEFT JOIN  order o ON o.id=og.order_id</code>

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

大概是这样,不知道写错没有</code>

One-to-many, relational model

After reading some of the answers above, I think they can meet the question’s requirements. For me, who has obsessive-compulsive disorder, I have to say that you must not use * when querying the subject. Write out as many fields as you want, and rename the field names the same.

It is recommended not to use join and split into two queries; also try not to use SELECT *

I also have a bit of obsessive-compulsive disorder. I have been exposed to indexes recently. When I see mysql, I think of indexes. I would like to ask if the conditional field to be queried has been indexed?
Also after seeing the above answer, first query the data in the order table, and then use a loop to query the data in the order_goods table corresponding to each number id. In this way, separate queries will not cause MySQL to freeze instantly (of course these You will see this when the amount of data is particularly large. If the amount of data is small, I won’t say anything about using left join)

Multiple table query. Related

<code>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';</code>

The above two ways of writing are the same, and they implement two table connections.
The way of writing three table connections is also similar, for example, querying the courses and grades of the student with ID 1:

<code>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;</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn