2016-03-29 16 views
0

2つのテーブルには、列数と列名がそれぞれ異なります。同じIDで行名が異なる複数の行

タブA:

ID nome  cognome messaggio testo  orario  ip 
--- --------- --------- --------- --------- --------- --------- 
1 a   a   a   a   a   127 
2 b   b   b   b   b   111 
3 a   a   tt   qqq  h   127  

タブB:

id nome  cognome email 
--- --------- --------- --------- 
1 t   t   t 

私は私がそうであるようにテーブルや適切な出版社の両方内%%Tの両方のテーブルのすべての列を使用したいですか?

は、印刷:

ID nome  cognome messaggio testo  orario  ip   email 
--- --------- --------- --------- --------- --------- --------- --------- 
1 t   t   null  null  null  null  t 
3 a   a   tt   qqq  h   127  null 
+0

あなたは私は – daremachine

+1

はあなたには、いくつかの詳細を追加ことができますねUNION ALLを使用することができます詳細を読みますか?期待される結果を追加する質問を編集することができれば(テーブルサンプルとの一貫性)、これはより良い回答を得るのに役立ちます。 – fusion3k

+0

多分あなたは「%%」のような、特殊なテキストテーブル/インデックスの使用を検討する必要があり、非常badforあなたが私の答えに読むことができるように私は、印刷 – quazardous

答えて

0

あなたはこのような何かを探している:

SELECT ID as id, nome, cognome, messaggio, testo, orario, ip, NULL AS email 
     FROM `tabA` 
    WHERE nome LIKE '%t%' OR cognome LIKE '%t%' OR messaggio LIKE '%t%' OR testo LIKE '%t%' 

UNION ALL 

    SELECT id as id, nome, cognome, NULL as messaggio, NULL AS testo, NULL as orario, NULL AS ip, email 
     FROM `tabB` 
    WHERE nome LIKE '%t%' OR cognome LIKE '%t%' OR email LIKE '%t%' 

sqlFiddle demo

UNIONSELECT文に複数の結果を結合するために使用されます単一の結果設定します。 UNION重複行を削除すると、UNION ALLはすべての行を返します。それぞれのSELECTステートメントの列番号は等しくなければならないため、SELECTのすべてのフィールドを指定し、存在しない列にはNullを設定します。

上記のLIKEの使用がパフォーマンスに重大な影響を与えるにご注意ください。


+0

で結果を編集 – fusion3k

+0

あなたはこのプロジェクトを開始していますか、またはあなたのデータベース構造がすでに存在していますか? – fusion3k

+0

私は今開始:)が、OK TNKSマンUは貴重と –

関連する問題