-2

私は2つのテーブルを持っています。

ニュース

news_id | header | text

ニュース_コメント

comment_id | comment | date | fk_news_id

現在、私はニュースを引き出すだけです。ただし、コメントもプルしたいのですが、単一のクエリを作成できるかどうか、または最初にニュースをプルしてからコメントをプルする必要があるかどうかはよくわかりません。

どちらの方法が (両方可能であれば) より良い方法でしょうか?

4

2 に答える 2

2

それがあなたの心にあるものかどうかは正確にはわかりません...

SELECT 'N' AS type, news_id, header, text, NULL AS date
FROM news
UNION
SELECT 'C' AS type, fk_news_id AS news_id, NULL AS header, comment AS text, date
FROM comments
ORDER BY news_id, type desc

これにより単一の結果セットが提供されますが、結果からコメント データを取得するときは、さまざまな列名を考慮する必要があります。

于 2013-05-08T07:07:24.727 に答える
2

使用するINNER JOIN

SELECT  a.*, b.*
FROM    news a
        INNER JOIN news_comments b
            ON a.news_ID = b.fk_news_id
ORDER   BY a.news_ID, b.comment_ID

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

上記のステートメントnewsは、少なくとも 1 つのコメントがあるもののみを返します。コメントがなくてもすべてのニュースを返したい場合は、 を使用しますLEFT JOIN

SELECT  a.*, b.*
FROM    news a
        LEFT JOIN news_comments b
            ON a.news_ID = b.fk_news_id
ORDER   BY a.news_ID, b.comment_ID
于 2013-05-08T06:09:20.663 に答える