mysql多表查詢(xún)的問(wèn)題
問(wèn)題描述
產(chǎn)品分類(lèi)表:prolei產(chǎn)品信息表:pro
前提知道某分類(lèi)lei的值,他對(duì)應(yīng)著分類(lèi)表(prolei)中的category_id.現(xiàn)在需要,通過(guò)lei搜索分類(lèi)表(prolei)中的category_id的記錄,然后用搜索結(jié)果去產(chǎn)品表(pro)中搜索所有的記錄,對(duì)應(yīng)著產(chǎn)品表中的字體goods_id。
這個(gè)怎么寫(xiě)?
問(wèn)題解答
回答1:以后想讓人快速清晰地看懂問(wèn)題,麻煩貼一下DDL語(yǔ)句,加上清晰簡(jiǎn)潔的問(wèn)題描述,謝謝。
一次查詢(xún):
SELECT b.* FROM prolei AS a, pro AS bWHERE a.category_id = b.goods_idAND a.lei = ?
但建議分開(kāi)2次查詢(xún),尤其是互聯(lián)網(wǎng)應(yīng)用這種并發(fā)量比較大的場(chǎng)景應(yīng)盡量避免聯(lián)表查詢(xún):
SELECT category_id FROM proleiWHERE lei = ?;SELECT * FROM proWHERE goods_id IN (...) #在代碼里把SQL1的結(jié)果填進(jìn)去回答2:
不太明白你說(shuō)的意思,能把2個(gè)表的字段寫(xiě)一下么,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:
不知道你所說(shuō)的使用分類(lèi)表中的結(jié)果是一個(gè)什么樣的結(jié)果,我暫定為某一個(gè)字段數(shù)據(jù)結(jié)果作條件吧,如下子查詢(xún)
SELECT `字段1`,`字段2`,`字段3` FROM `pro` WHERE `goods_id` IN (SELECT `某字段` FROM `prolei` WHERE `category_id`={$lei})
不過(guò)考慮到你時(shí)要對(duì)產(chǎn)品表做操作,產(chǎn)品表的數(shù)據(jù)應(yīng)該很大,不推薦你用子查詢(xún)。你可以先把分類(lèi)表中的數(shù)據(jù)查詢(xún)出來(lái),然后通過(guò)程序做好對(duì)應(yīng)的查詢(xún)產(chǎn)品表的數(shù)據(jù)條件,再去查詢(xún)產(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. 輸入地址報(bào)以下截圖錯(cuò)誤,怎么辦?2. python中return 語(yǔ)句與 分支語(yǔ)句連用問(wèn)題3. thinkphp3 count()方法必須加上字段?4. python - 這句是什么錯(cuò)誤?5. 這是什么情況???6. mysql 5個(gè)left關(guān)鍵 然后再用搜索條件 幾千條數(shù)據(jù)就會(huì)卡,如何解決呢7. node.js - nodejs中mysql子查詢(xún)返回多行結(jié)果怎么處理?8. 怎么php怎么通過(guò)數(shù)組顯示sql查詢(xún)結(jié)果呢,查詢(xún)結(jié)果有多條,如圖。我要forsearch里面echo9. mysql - SQL server 誤用delete 怎么恢復(fù)?10. mysql - 瞬間流量很高的網(wǎng)站,要頻繁的插入數(shù)據(jù)到數(shù)據(jù)庫(kù),應(yīng)該怎么解決這個(gè)問(wèn)題?
