在我的php网站上,我有3种内容类型保存在具有不同列数的不同表中
例如:
Type 1 (X columns) (example: table_products)
Type 2 (Y columns) (example: table_customers)
Type 3 (Z columns) (example: table_posts)
我正在制作一个搜索系统,搜索同一个Select中的每个类型,最后显示所有结果。
示例:
I search: foo
System searchs on: Type 1, type 2 and type 3 "foo" and shows:
- Product foo1
- Product foo2
- Customer foo1
- Customer foo2
- Customer foo3
- Post foo1
(It's only an example)
现在我有三个不同的函数来对每种类型进行查询,但我不喜欢这个,因为我不能对它进行分页。
我需要制作一个在三个表上搜索的查询。
谢谢
答案 0 :(得分:2)
这将显示tableName在找到文本的位置。
SELECT 'Product' tableName, type1
FROM table_product
WHERE type1 LIKE '%foo%'
UNION
SELECT 'Customer' tableName, type2
FROM table_Customer
WHERE type2 LIKE '%foo%'
UNION
SELECT 'posts' tableName, type3
FROM table_posts
WHERE type3 LIKE '%foo%'
答案 1 :(得分:1)
使用UNION
(隐式不同)或UNION ALL
,如下所示:
SELECT Name FROM table_products WHERE Name LIKE '%Foo%'
UNION ALL
SELECT Name FROM table_customers WHERE Name LIKE '%Foo%'
UNION ALL
SELECT Name FROM table_posts WHERE Name LIKE '%Foo%'
-- This is only an example too.
答案 2 :(得分:0)
你也可以这样做:
SELECT *
FROM(
SELECT 1 AS Type, MyColumn FROM table_product
UNION ALL
SELECT 2 AS Type, MyColumn FROM table_customers
UNION ALL
SELECT 3 AS Type, MyColumn FROM table_posts
) AllResults
WHERE AllResults.MyColumn LIKE '%foo%'