2012-10-30 66 views
0

在我的PHP網頁我有3個內容類型具有不同的列數SQL查詢不同的表並顯示所有

例如保存在不同的表:我正在做一個搜索系統

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) 

現在我有三個不同的功能,使每個類型的查詢,但我不喜歡這樣,因爲我不能分頁它。

我需要做一個查詢,在三個表上進行搜索。

謝謝

回答

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

這將顯示上的文字已被發現在表名。

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