SELECT `users`.*
FROM (`users`)
JOIN `users_profiles` ON `users_profiles`.`user_id` = `users`.`id`
JOIN `albums` ON `albums`.`user_id` = `users`.`id`
JOIN `users_sites` ON `users_sites`.`user_id` = `users`.`id`
WHERE `users`.`id` = 4
これは私のクエリです。私はusers
、users_profiles
、albums
、およびusers_sites
のデータを持っています。現在、4つの別々のクエリで必要なデータを取得していますが、JOIN
で最適化します。My MySQL JOINクエリは1つのテーブルからのみデータを取得します
私の問題は、返される結果セットには、テーブル(ここではid
が4)からの1行のデータしか含まれていないということです。これは期待されていますが、他のテーブルも末尾にJOIN
と書いて欲しいです。例えば
、users_profiles
は、私は4にuser_id
セットが含まれています。しかしusers_profiles
からの行は、これまで私が見るすべてはusers
から来るもので、クエリに追加されていない確認している行が含まれています。
アイデア?他のテーブルの場合も同じです。をに正しく選択する必要があることを確認しましたが、何が間違っているのか分かりません。
ありがとうございました!
あなたは何のアルバムは彼らのために存在しない場合でも、ユーザーのための行をしたいですか? users_sitesがない場合はどうなりますか? 1人のユーザーに複数のアルバムと複数のユーザー_サイトがありますか? – jswolf19
リマインダーをありがとう - アルバムのないユーザーの(作業中の)バージョンをテストしただけで、0行が返されます。私はそれを保持するために私のクエリの第4行をLEFT JOINに変更しました。 – Jack
複数のアルバムと複数のusers_sitesの両方を許可すると、おそらくこのクエリで必要なものを得ることができないからです。 – jswolf19