2011-12-19 12 views
0

を使用して、異なるテーブルをクエリすることはできますか?たとえば、FROMまたはJOINの後にできますか?異なるテーブルの場合

私のデータベースは、私は私がpost_typeを使用してこれらのテーブルをリンクするなどblogsphotosなど他のテーブルにリンクするつもりだどのpost_typeを持っています。

動作しません
SELECT *, (SELECT title 
      FROM (CASE WHEN comments.post_type=1 THEN blogs END) p 
      WHERE comments.post_id = p.ID) as post_title 
FROM comments 
JOIN .... 
ORDER BY comments.ID 

post_type = 1場合たとえば、その後、blogsなど

とリンク私の現在のクエリは、このようなものです。そのサブクエリを使用して、私はリンクしている他のテーブルのタイトルを取得することができますので、参加するにはCASEを使用することは可能ですか?たぶん、この勿論

LEFT JOIN (CASE WHEN post_type = 1 THEN blogs) 

答えて

0
SELECT 
comments.*, 
IFNULL(blogs.otherfield,IFNULL(otherthing.otherfield,IFNULL(another.otherfield,..))) AS otherfield 
FROM 
comments 
LEFT JOIN blogs ON comments.post_type=1 AND comments.post_id=blogs.ID 
LEFT JOIN otherthing ON comments.post_type=2 AND comments.post_id=otherthing.ID 
LEFT JOIN another ON comments.post_type=3 AND comments.post_id=another.ID 
... 
WHERE ... 
ORDER BY comments.ID 

のようなその場しのぎですが、テーブル構造は、それが必要になります。

+0

あなたはコメントのためのより良い構造として何を提案しますか?私はこの問題に遭遇する前に私の多方面のコメントについてかなりフレキシブルであると思った:( – Henson

関連する問題