私は2つのテーブルを持っています。
ニュース
news_id | header | text
ニュース_コメント
comment_id | comment | date | fk_news_id
現在、私はニュースを引き出すだけです。ただし、コメントもプルしたいのですが、単一のクエリを作成できるかどうか、または最初にニュースをプルしてからコメントをプルする必要があるかどうかはよくわかりません。
どちらの方法が (両方可能であれば) より良い方法でしょうか?
それがあなたの心にあるものかどうかは正確にはわかりません...
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
これにより単一の結果セットが提供されますが、結果からコメント データを取得するときは、さまざまな列名を考慮する必要があります。
使用する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