0

私のPHP Webでは、列数が異なる異なるテーブルに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)

これで、各タイプに対してクエリを作成するための 3 つの異なる関数ができましたが、ページ分割できないため、これは好きではありません。

一度に 3 つのテーブルを検索するクエリを作成する必要があります。

ありがとうございました

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 に答える