1

我有两个表格和一个搜索表单来搜索关键字。我正在尝试在两个表上搜索该关键字的多个列,如果查询匹配,则获取 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首先,当您不做等时,我不会使用INNER JOIN...似乎做得过火了,而且我猜您之后需要括号AND-OR如果您明确希望找到状态为“活动”的结果,那么也需要将 s括起来.

怎么样:

    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 回答