[英]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.