Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在两个mysql表中搜索多个列?_Mysql_Search - Fatal编程技术网

在两个mysql表中搜索多个列?

在两个mysql表中搜索多个列?,mysql,search,Mysql,Search,我有两个表和一个搜索表单来搜索关键字。我试图在两个表中搜索多个列的关键字,如果查询匹配,则获取id列以供进一步使用。我尝试过这个(假设“优惠券”是用户正在搜索的术语) 这里我想要配置文件的id和与关键字匹配的产品的id。我尝试了这个,结果非常奇怪,看起来只有配置文件ID。所以,这是一个错误的查询。这种搜索的查询应该是什么?内部连接?请给我一些示例查询,我将非常感谢您的帮助。试试这个:: SELECT `ID`,'profile_ID' FROM `Profiles` AS `p` WHERE

我有两个表和一个搜索表单来搜索关键字。我试图在两个表中搜索多个列的关键字,如果查询匹配,则获取id列以供进一步使用。我尝试过这个(假设“优惠券”是用户正在搜索的术语)

这里我想要配置文件的id和与关键字匹配的产品的id。我尝试了这个,结果非常奇怪,看起来只有配置文件ID。所以,这是一个错误的查询。这种搜索的查询应该是什么?内部连接?请给我一些示例查询,我将非常感谢您的帮助。

试试这个::

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%' 

首先,当您没有进行
内部联接时,我不会将
用作p
。。。似乎做得太过分了,而且我想如果您明确希望查找状态为“活动”的结果,您需要在
后面加括号,并在
周围加括号

那么:

    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%')

它什么也不返回,正如我所看到的,在两个产品的desc列中有优惠券关键字。因此,至少有两种产品应该退货,但没有退货:(@那里的状态是什么?所有产品的状态都已批准。好吧,现在我知道发生了什么。你的新查询返回的内容与我的相同,但首先我认为它从配置文件返回2,但它返回的是列名“ID”的任何结果,但我希望从名为“ID”的产品表和名为“ID”的配置文件表中得到结果,但ats没有发生(您使用了UNION,其中如果profileID和product Id相同,您将只得到1行,但在UNION ALL中它将返回2行。我反复更改查询,我先尝试内部联接,然后尝试UNION,因此,我认为p或d不会影响结果。不过,ORs周围的括号会根据n在第行的“desc-LIKE“%coupon%”或标记“%coupon%”限制0,30”附近,您希望得到什么样的结果2@Prashank:
DESC
应该用反引号括起来:
`DESC`
或者(更好)将此列名更改为非保留字。与其返回正确的产品id相同,但列名为“id”
    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%')