2011-11-03 9 views
-1

私はテーブル1とテーブル2の2つのテーブルを持っています。 Table1には10フィールド、Table2には9フィールドがあります。両方のテーブル、すなわちAdateTimeに共通の列が1つあります。この列は、ユーザアクションのUNIXタイムスタンプを保存します。両方のテーブルのレコードを1つの結果として表示したいが、ソートはAdateTimeに従って行う必要があります。最近のアクションを最初に表示する必要があります。時には表1の最近の多くのアクションがありますが、表2のアクションはほとんどありません。逆も可能です。だから、私は単一のクエリを使用して両方のテーブルから結合結果セットをフェッチしたい。私はPHPのMySQLを使用しています。データベースクエリのヘルプが必要です

+0

Table1とTable2のすべての行、または一致するAdatetime値を持つ行だけを使用しますか? –

+0

こんにちはTom、あなたの投稿に感謝します。はい、両方のテーブルのすべての行が必要です。つまり、table1に最近のレコードクエリがある場合はtable2 nullレコードがフェッチされ、table2に最近のレコードクエリがある場合はtable1 nullレコードがフェッチされます。最近の時間に合わせてこの結果セットを注文したい。私たちは両方のテーブルに共通のフィールドADateTimeを持っています –

答えて

0

を試してみてください。だから何かのように

select col1,col2,col3,col4,col5,col6,col7,col8,col9,AdateTime 
from 
(
select col1,col2,col3,col4,col5,col6,col7,col8,col9,AdateTime from Table1 
UNION ALL 
select col1,col2,col3,col4,col5,col6,col7,col8,null as col9,AdateTime from Table2 
) t 
order by t.Adatetime desc; 
+0

ご返信ありがとうございます。あなたのソリューションを試してみましょう。異なる列数のテーブルでUnionを実行できますか? –

+0

可能です。 Table1 selectからの列の数がTable2 selectからの列の数と一致するように、ダミー列を配置する必要があります。そのため、表2の選択肢には「col as as col9」があります。 –

+0

おかげでトム、あなたのソリューションは動作しているようです。少数のレコードでテストするだけです。あなたの助けに感謝します。 –

1

は、私がインライン・ビューとUNION ALLを使用することになり

SELECT t1.*, t2.* 
FROM table1 t1 INNER JOIN table2 t2 
ON t1.AdateTime = t2.AdateTime 
ORDER BY t1.AdateTime 

または

(テーブルが関連していない場合)

SELECT * FROM 
    (SELECT ADateTime, col1, col2, col3, col4 FROM table1 
    UNION 
    SELECT ADateTime, col1, col2, 1 AS col3, NULL AS col4 FROM table2) t2 
ORDER by ADateTime 
+0

あなたの返信に感謝します。私は、両方のテーブルで列の数が同じ場合にUNIONが可能であることを読んでいます。本当ですか?この場合、列の数が異なるためです。どうもありがとう 。 –

+0

@NareshChauhan:そうです。列が異なる場合は、私の編集した答えをお読みください:) – Marco

+0

私はこのクエリを試しましたが、それは#1248を示しています - すべての派生テーブルはphpMyadminで独自のエイリアスエラーを持つ必要があります。何か案が?迅速なお返事をありがとう。 –

0

はいそれを行うことができます。これらの2つのテーブルを結合条件で結合するだけで済みます。結合条件が行と一致する場合、その行のみが表示されます。さらに、操作のためにコードを記述することができます。 AdateTimeによる注文を使用する

select t1.column_1234,t2.column_1234 
    from t1 table1 , t2 table2 
    where t1.matching_column = t2.matching_column 
    order by t1.AdateTime; 

t1.matching_column And t2.matching_column are the Primary And Foreign keys for these tables (Matching Column)