Order table: order
Order product table: order_goods
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 table: order
Order product table: order_goods
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>