2012-04-12 7 views
0

私は主に、ニュース、アルバム、ビデオという3つの主要なテーブルを持っています。私はFacebookの壁の種類のページを作成したい、3つのテーブルすべてからのすべての更新で、降順で投稿された時間でソートされたように見える。すべてのDBから1つのクエリでコンテンツを取得します

このような呼び出しをdbに1回のクエリで行うことは可能ですか?

私は

ニュースは、ID、タイトル、内容、タイムスタンプ
アルバムを持って簡単に私のテーブルを説明しますID、タイトル、albumdirectory、タイムスタンプ
動画は、ID、タイトル、youtubelink、タイムスタンプを持っています。

できない場合は、これを実行する最善の方法があります。

答えて

1

この目的のために3つのテーブルすべてを同時に照会すると、ではありません。です。 フィードテーブルを作成することができます。 (ニュース、アルバム、動画)の日付参照IDをに挿入します。フィードテーブルをクエリし、そのテーブルの参照IDに基づいての他の3つのテーブルに追加し、フィードテーブルの日付に従って表示することができます。私はこのアプローチを使用しており、これは私のためにうまくいきます。

これが役に立ちます。

1

データの設計方法によって異なります。すべてが何らかの共有IDを使用して関連している場合は、単一の結合クエリを作成してすべてのデータを取得できます。そのデータが関連していない場合は、3回別々に電話をかける必要があります。

0

あなたは、各エンティティに欲しい情報が同じ構造(すなわち、ID、タイトル、タイムスタンプ)を共有している場合、あなたは(というUNION

SELECT * FROM (
    SELECT CONCAT('news','-',id),title,`timestamp` 
    FROM news 
    UNION 
    SELECT CONCAT('albums','-',id),title,`timestamp` 
    FROM albums 
    UNION 
    SELECT CONCAT('videos','-',id),title,`timestamp` 
    FROM videos 
) AS all_items 
ORDER BY `timestamp` 

IDフィールドは、データベース全体で一意である場合にこれを行うことができますCONCATを削除してidsを返すことができます。

関連する問題