1

キーワードを検索するための2つのテーブルと検索フォームがあります。2つのテーブルで複数の列のそのキーワードを検索しようとしています。クエリが一致する場合は、さらに使用するためにid列を取得します。私はこれを試しました(「クーポン」はユーザーが検索している用語であると仮定します)

SELECT `ID` FROM `Profiles` AS `p` WHERE `p`.`Status` = 'Active' AND `p`.`Address`
LIKE '%coupon%' OR `p`.`BusinessName` LIKE '%coupon%' OR `p`.`BusinessSubCategory`
LIKE '%coupon%' OR `p`.`DescriptionMe` LIKE '%coupon%' OR `p`.`Tags` LIKE '%coupon%'
UNION SELECT `id` FROM `products` AS `d` WHERE `d`.`status` = 'approved' AND
`d`.`title` LIKE '%coupon%' OR `d`.`desc` LIKE '%coupon%' OR `d`.`tags` LIKE '%coupon%'

ここでは、プロファイルのIDとキーワードに一致する製品のIDが必要です。私はこれを試しましたが、これは非常に奇妙な結果を返し、プロファイルIDのみのように見えます。だから、それは間違ったクエリです。この種の検索のクエリはどうあるべきですか?インナージョイン?このためのサンプルクエリをいくつか教えてください。助けていただければ幸いです。

4

2 に答える 2

2

まず、他のことAS pをしていないときは使用しません...やりすぎのようです。さらに、ステータスが「アクティブ」の結果を明示的に検索する場合は、sを囲むINNER JOINかっこが必要だと思います。 。ANDOR

どうですか:

    SELECT ID FROM Profiles WHERE Status = 'Active' AND (Address LIKE '%coupon%' OR BusinessName LIKE '%coupon%' OR BusinessSubCategory LIKE '%coupon%' OR DescriptionMe LIKE '%coupon%' OR Tags LIKE '%coupon%')
UNION SELECT id FROM products WHERE status = 'approved' AND (title LIKE '%coupon%' OR desc LIKE '%coupon%' OR tags LIKE '%coupon%')
于 2012-07-15T12:29:28.077 に答える
1

これを試して::

SELECT `ID`,'profile_ID' FROM 
`Profiles` AS `p` 
WHERE `p`.`Status` = 'Active' AND `p`.`Address`
LIKE '%coupon%' OR `p`.`BusinessName` LIKE '%coupon%' OR `p`.`BusinessSubCategory`
LIKE '%coupon%' OR `p`.`DescriptionMe` LIKE '%coupon%' OR `p`.`Tags` LIKE '%coupon%'


UNION ALL

SELECT `id`, 'productID' FROM `products` AS `d` WHERE `d`.`status` = 'approved' AND
`d`.`title` LIKE '%coupon%' OR `d`.`desc` LIKE '%coupon%' OR `d`.`tags` LIKE '%coupon%' 
于 2012-07-15T12:25:45.673 に答える