mysql多表查詢的問題
問題描述
產(chǎn)品分類表:prolei產(chǎn)品信息表:pro
前提知道某分類lei的值,他對應(yīng)著分類表(prolei)中的category_id.現(xiàn)在需要,通過lei搜索分類表(prolei)中的category_id的記錄,然后用搜索結(jié)果去產(chǎn)品表(pro)中搜索所有的記錄,對應(yīng)著產(chǎn)品表中的字體goods_id。
這個怎么寫?
問題解答
回答1:以后想讓人快速清晰地看懂問題,麻煩貼一下DDL語句,加上清晰簡潔的問題描述,謝謝。
一次查詢:
SELECT b.* FROM prolei AS a, pro AS bWHERE a.category_id = b.goods_idAND a.lei = ?
但建議分開2次查詢,尤其是互聯(lián)網(wǎng)應(yīng)用這種并發(fā)量比較大的場景應(yīng)盡量避免聯(lián)表查詢:
SELECT category_id FROM proleiWHERE lei = ?;SELECT * FROM proWHERE goods_id IN (...) #在代碼里把SQL1的結(jié)果填進(jìn)去回答2:
不太明白你說的意思,能把2個表的字段寫一下么,prolei表的哪個字段和pro表的哪個字段關(guān)聯(lián)?你看看是這個意思么:
select p.* from prolei pl, pro p where pl.goods_id = p.goods_id and pl.category_id = {lei}回答3:
不知道你所說的使用分類表中的結(jié)果是一個什么樣的結(jié)果,我暫定為某一個字段數(shù)據(jù)結(jié)果作條件吧,如下子查詢
SELECT `字段1`,`字段2`,`字段3` FROM `pro` WHERE `goods_id` IN (SELECT `某字段` FROM `prolei` WHERE `category_id`={$lei})
不過考慮到你時要對產(chǎn)品表做操作,產(chǎn)品表的數(shù)據(jù)應(yīng)該很大,不推薦你用子查詢。你可以先把分類表中的數(shù)據(jù)查詢出來,然后通過程序做好對應(yīng)的查詢產(chǎn)品表的數(shù)據(jù)條件,再去查詢產(chǎn)品表。
SELECT `字段1`,`字段2`,`字段3` FROM `prolei` WHERE `category_id`={$lei}# code ... 假設(shè)程序處理之后的條件為 $where = ...SELECT `字段1`,`字段2`,`字段3` FROM `pro` WHERE `goods_id` IN {$where} #根據(jù)你自己的需求條件 IN;=;LIKE
希望對你有幫助
相關(guān)文章:
1. bootstrp是col-md-12列的,只有col-md-10有內(nèi)容,可以讓沒有內(nèi)容的不占據(jù)位置嗎;2. python - Fiddler+Android模擬器抓取app,json數(shù)據(jù)被加密了,如何解析?3. thinkPHP5中獲取數(shù)據(jù)庫數(shù)據(jù)后默認(rèn)選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙4. java - 如何用圖畫的方式有效地表示多線程?5. wordpress里,這樣的目錄列表是屬于小工具還是啥?6. MySQL 使用 group by 之后然后 IFNULL(COUNT(*),0) 為什么還是會獲得 null7. 百度地圖 - Android app中準(zhǔn)備接入地圖sdk,百度VS高德哪個好一點?8. python 3.4 error: Microsoft Visual C++ 10.0 is required9. 我的怎么不顯示啊,話說有沒有QQ群什么的10. 常量在外面不加引號會報錯。
