我构建了这段代码,我想做多搜索。
从表格搜索:商品,商店,类别。
但是,当我在查询之间建立联盟时,我无法进行链接。
category.php?id=1
item.php?id=1
store.php?id=1
但是当我结合时,我得到了这个:
id | name
----------
1 | google
2 | love
3 | shop
$query = '(SELECT id,name FROM `item` WHERE `accepted` = '1' AND `name` LIKE '%".$search."%')
UNION ALL
(SELECT id,name FROM `category` WHERE `name` LIKE '%".$search."%')
UNION ALL
(SELECT id,name FROM `store` WHERE `accepted` = '1' AND `name` LIKE '%".$search."%')
LIMIT 25
';
我怎么知道哪个表格能得到这些信息呢?
谢谢!
答案 0 :(得分:1)
将表添加到子查询中:
(SELECT id, name, 'item' as which FROM `item` WHERE `accepted` = '1' AND `name` LIKE '%".$search."%')
UNION ALL
(SELECT id, name, 'category' as which FROM `category` WHERE `name` LIKE '%".$search."%')
UNION ALL
(SELECT id, name, 'store' as which FROM `store` WHERE `accepted` = '1' AND `name` LIKE '%".$search."%');
LIMIT 25
答案 1 :(得分:0)
只需添加一个包含源名称的虚拟列:
$query = '(SELECT "item" as table, id,name FROM `item` WHERE `accepted` = '1' AND `name` LIKE '%".$search."%')
UNION ALL
(SELECT "category" AS table, id,name FROM `category` WHERE `name` LIKE '%".$search."%')
UNION ALL
(SELECT "store" AS table, id,name FROM `store` WHERE `accepted` = '1' AND `name` LIKE '%".$search."%')
LIMIT 25
';
答案 2 :(得分:0)
将其作为值添加到您的查询中:
$query = "(SELECT id,name,'item' FROM `item` WHERE `accepted` = '1' AND `name` LIKE '%".$search."%')
UNION ALL
(SELECT id,name,'CATEGORY' FROM `category` WHERE `name` LIKE '%".$search."%')
UNION ALL
(SELECT id,name,'STORE' FROM `store` WHERE `accepted` = '1' AND `name` LIKE '%".$search."%')
LIMIT 25";
所以你会知道记录的来源