0

在我的 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)

现在我有三个不同的函数来对每种类型进行查询,但我不喜欢这样,因为我无法对其进行分页。

我需要进行一次搜索三个表的查询。

谢谢

4

3 回答 3

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%'
于 2012-10-30T15:25:14.440 回答
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.
于 2012-10-30T15:24:28.433 回答
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%'
于 2012-10-30T15:40:48.943 回答