php中這個的mysql語句怎麼寫?

WBOY
發布: 2016-08-08 09:06:46
原創
1011 人瀏覽過

訂單表:order
php中這個的mysql語句怎麼寫?
訂單商品表:order_goods
php中這個的mysql語句怎麼寫?
也就是order_goods裡存放著order裡每個訂單裡的所有商品資訊;
我需要找出符合條件的訂單裡有哪些商品怎麼可以找出商品來寫?
如:我要找訂單表內order_no等於20160804164336873986的訂單,並且order與order_goods裡所有欄位都列出來。

回覆內容:

訂單表:order
php中這個的mysql語句怎麼寫?
訂單商品表:order_goods
php中這個的mysql語句怎麼寫?
也就是order_goods裡存放著order裡每個訂單裡的所有商品資訊;
我需要找出符合條件的訂單裡有哪些商品怎麼可以找出商品來寫?
如:我要找訂單表內order_no等於20160804164336873986的訂單,並且order與order_goods裡所有欄位都列出來。

order_goods對於一個order_id有多個記錄因此以order_goods左連order查詢,連接查詢語句執行效率不高得優化下

<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>
登入後複製

一對多,關聯模型

看了樓上幾位的回答,應該可以滿足題主的要求了。對於有強迫症的我,我必須要說一下,題主查詢的時候一定不要用*號,字段有多少就都寫出來,字段名一樣的重命名。

建議不要用join了,分成兩個查詢;另外盡量不要用SELECT *

我也有點強迫症了,最近一直接觸索引,一看到mysql就想到索引,我想問下要查詢的條件字段創建索引了嗎?
還有看到上面的回答,先查詢出order表中的數據,再用循環去查詢每個的編號id對應的order_goods表中的數據,這樣分開查詢不會瞬間讓mysql卡死(當然了這些是數據量特別大的時候會看出來,數據量少的話用left join我也不說啥)

多表查詢。關聯

<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>
登入後複製

上面兩種寫法都是一樣的,實現的是2個表連接.
3個表連接的寫法也類似,比如查詢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>
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!