mysql多表查詢的問題
問題描述
產(chǎn)品分類表:prolei產(chǎn)品信息表:pro
前提知道某分類lei的值,他對(duì)應(yīng)著分類表(prolei)中的category_id.現(xiàn)在需要,通過lei搜索分類表(prolei)中的category_id的記錄,然后用搜索結(jié)果去產(chǎn)品表(pro)中搜索所有的記錄,對(duì)應(yīng)著產(chǎn)品表中的字體goods_id。
這個(gè)怎么寫?
問題解答
回答1:以后想讓人快速清晰地看懂問題,麻煩貼一下DDL語句,加上清晰簡(jiǎn)潔的問題描述,謝謝。
一次查詢:
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ā)量比較大的場(chǎng)景應(yīng)盡量避免聯(lián)表查詢:
SELECT category_id FROM proleiWHERE lei = ?;SELECT * FROM proWHERE goods_id IN (...) #在代碼里把SQL1的結(jié)果填進(jìn)去回答2:
不太明白你說的意思,能把2個(gè)表的字段寫一下么,prolei表的哪個(gè)字段和pro表的哪個(gè)字段關(guān)聯(lián)?你看看是這個(gè)意思么:
select p.* from prolei pl, pro p where pl.goods_id = p.goods_id and pl.category_id = {lei}回答3:
不知道你所說的使用分類表中的結(jié)果是一個(gè)什么樣的結(jié)果,我暫定為某一個(gè)字段數(shù)據(jù)結(jié)果作條件吧,如下子查詢
SELECT `字段1`,`字段2`,`字段3` FROM `pro` WHERE `goods_id` IN (SELECT `某字段` FROM `prolei` WHERE `category_id`={$lei})
不過考慮到你時(shí)要對(duì)產(chǎn)品表做操作,產(chǎn)品表的數(shù)據(jù)應(yīng)該很大,不推薦你用子查詢。你可以先把分類表中的數(shù)據(jù)查詢出來,然后通過程序做好對(duì)應(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
希望對(duì)你有幫助
相關(guān)文章:
1. python - pyspider的分布式運(yùn)行成功,2臺(tái)slave跑,但是時(shí)間并沒有縮短問題?2. 致命錯(cuò)誤: Class ’appfacadeTest’ not found3. dockerfile - 為什么docker容器啟動(dòng)不了?4. angular.js - 用requireJS模塊angularjs代碼時(shí)遇到一些問題5. android - Apk 中找不到r類文件6. npm install -g browser-sync這個(gè)之后出錯(cuò) 還有人嗎 我都感覺沒人回答問題了7. python - 數(shù)據(jù)無法插入到mysql表里8. javascript - 小程序跳轉(zhuǎn)失敗?9. javascript - 求正則表達(dá)式的寫法10. java - Oracle如何獲取去重結(jié)果集中某一條數(shù)據(jù)的下一條數(shù)據(jù)
