2

3つのテーブルがあるとします。

articles(id,id_cat)
categories(id)
messages(id,id_cat,id_article)

..どこarticlesに関連していて、またはに関連しcategoriesmessagesいる可能性があります(ユーザーはカテゴリまたは記事にメッセージを投稿できます)articlescategories

架空の現在のカテゴリid=55で、現在のカテゴリと現在のカテゴリに属する​​記事に投稿されたすべてのメッセージを一覧表示するには、どのクエリを実行できますか?

-ユニオンソリューション-

Poodlehatは、UNIONの使用を提案しています。これは、この特定の問題に対して次のようになります。

SELECT * FROM (
(SELECT m.id FROM messages AS m INNER JOIN categories AS c ON c.id=m.id_cat 
WHERE m.id_cat=55) 
UNION 
(SELECT m.id FROM messages AS m INNER JOIN articles AS a ON a.id=m.id_article 
WHERE a.id_cat=55)
) AS foo

--------

さて、UNIONなしでこれを行う方法はありますか?

4

2 に答える 2

0
SELECT m.id    
FROM messages m 
WHERE m.id_cat=55
union 
SELECT m.id 
FROM messages m, articles a 
WHERE a.id_cat=55
AND m.id_article=a.id

組合なしでそれをやって、うーん、今あなたは私に挑戦しています...これがうまくいくかどうか見てください

SELECT m.id 
FROM messages m LEFT OUTER JOIN articles a ON m.id_article=a.id
WHERE m.id_cat=55 OR a.id_cat=55
于 2012-07-16T18:34:35.160 に答える
-1

これを試して ::

Select * from 
messages m 
inner join categories c on (m.id_cat=c.id)
inner join article a on (c.id=a.id_cat)
where m.id_cat=55
于 2012-07-16T18:26:39.777 に答える