2011-08-12 9 views
0

カテゴリ、グループ、および投稿を持つコミュニティのようなものがあります。ユーザーに関連するすべての投稿を選択する必要があります。これらの関係は、私がメンバーになっているどのグループでも作成されたすべての投稿が必要であるということです。サブクエリでクエリを実行します。このクエリとサブクエリを1つのクエリに結合する

ここで、私は何とかそれを最適化して、サブクエリなしで1つのクエリしか持たせたいと思います。問題は、私はどのようにわからない。この時点で、私は助けを探しています。

SELECT ... /* Lot of stuff. */ 
FROM `posts` 

JOIN `groups` 
ON (`groups`.`id` = `posts`.`group_id`) 

JOIN `users` 
ON (`users`.`id` = `posts`.`user_id`) 

WHERE `groups`.`id` IN (SELECT `group_id` FROM `group_members` WHERE `user_id` = '33') /* My sub-query. ID '33' is variable.*/ 
AND `posts`.`post_id` = 0 /* For only first level posts. */ 

テーブル構造が必要な場合は、質問してください。アドバイスに大きな感謝!

答えて

1
SELECT ... /* Lot of stuff. */ 
FROM `posts` 

JOIN `groups` 
ON (`groups`.`id` = `posts`.`group_id`) 

JOIN `users` 
ON (`users`.`id` = `posts`.`user_id`) 

JOIN `group_members` 
ON (`groups`.`id` = `group_members`.`group_id`) 

WHERE `group_members`.`user_id` = '33' 
AND `posts`.`post_id` = 0 /* For only first level posts. */ 

を試してみてください。 少なくとも、それは質問の質問と同等でなければなりません。もしそれが一貫していればわかりません。

0

は、トリックを行う必要があり、この

SELECT ... /* Lot of stuff. */ 
FROM `posts` 

JOIN `groups` 
ON (`groups`.`id` = `posts`.`group_id`) 

JOIN `users` 
ON (`users`.`id` = `posts`.`user_id`) 

inner join `group_members` on (`groups`.`id` = `group_members`.`group_id`) 
Where `group_members`.`user_id` = '33' AND `posts`.`post_id` = 0 
関連する問題