簡體   English   中英

MySQL查詢多個表?

[英]Mysql query with multiple tables?

希望您能提供幫助。 我想對包括多個表的產品進行關鍵字搜索。 但並非每個產品在每個表中都有任何條目...

table 'product'
id     product_name     description
1      my product       this is my favorite product
2      another item     that is another product
3      blue car         for driving away

table 'keywords'
prod_id    keywords
2          car, product, blue

所以,現在我想獲得所有產品,在“ product_name”,“ description”或“ keywords”中包含“ car”

僅僅使用一個簡單的mysql查詢就只會得到那些產品,它們都在兩個表中:

SELECT A.id FROM product A, keywords B WHERE A.ID = B.product_id AND....

我嘗試了LEFT JOIN-但結果是所有三個產品(也許我做錯了):

SELECT A.id FROM product A LEFT JOIN keywords B ON A.id = B.prod_id AND (A.product_name LIKE '%car%' OR A.description LIKE '%car%' OR B.keywords LIKE '%car%')

有人可以幫忙嗎? 謝謝&問候Jan

最好的方法是使用工會

    select id from product where product_name LIKE '%car%' OR description LIKE '%car%'
    union 
    select prod_id as id from keywords where keywords LIKE '%car%' ;

這可以使用聯合來完成:

(select id from product where product_name LIKE '%car%' OR description LIKE '%car%')
union 
(select prod_id from keywords where keywords LIKE '%car%' );

您將AND放在LEFT JOIN指令中,而不是WHERE 嘗試

SELECT `A.id` FROM product AS `A`
LEFT OUTER JOIN keywords AS `B` ON `A.id` = `B.prod_id`
WHERE (`A.product_name` LIKE '%car%' OR `A.description` LIKE '%car%' OR `B.keywords` LIKE '%car%')

請注意, LIKE '%car%'也會選擇That's my favorite cardigan.

RLIKE '[[:<:]]word[[:>:]]'可能更好。


資源:

RLIKE的Mysql RegExp: http : //dev.mysql.com/doc/refman/5.0/fr/regexp.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM