私は5つのmysqlテーブルを持っています。
ショップLEFT JOINクエリの3番目のテーブルを含む
+----+--------------+--------------+ | id | name | address | +----+--------------+--------------+ | 1 | Shop1 | Street1 | | 2 | Shop2 | Street2 | | 3 | Shop3 | Street3 | | 4 | Shop4 | Street4 | +----+--------------+--------------+
果物
+----+--------------+--------------+ | id | fruit | price | +----+--------------+--------------+ | 1 | Bannana | 2.5 | | 2 | Apple | 2.1 | | 3 | Orange | 1.8 | | 4 | Plum | 2.2 | +----+--------------+--------------+
可用性
+----+--------------+--------------+ | id | shop_id | fruit_id | +----+--------------+--------------+ | 1 | 1 | 2 | | 2 | 2 | 2 | | 3 | 1 | 3 | | 4 | 2 | 1 | +----+--------------+--------------+
shop_activity
+----+--------------+--------------+--------------+ | id | shop_id | user_id | status | +----+--------------+--------------+--------------+ | 1 | 2 | 1 | 1 | | 2 | 3 | 2 | 1 | | 3 | 1 | 2 | 2 | | 4 | 2 | 2 | 1 | +----+--------------+--------------+--------------+
ユーザー
+----+--------------+ | id | name | +----+--------------+ | 1 | Peter | | 2 | John | +----+--------------+
私は、ID 2(りんご)とフルーツが利用できるお店の名前のリストを取得する結果として、クエリ
SELECT
availability.shop_id,
shops.name
FROM availability
LEFT JOIN shops
ON availability.shop_id=shops.id
WHERE
fruit_id = 2
を持っています。
shop_activityテーブルをクエリに含めると、users
の場合にユーザーのステータスを取得することができます。 id
= 1適切な店の横にあります。あなたはこのような何かを試みることができる
Shop1, NULL Shop2, status: 1
私はすでにそれを試してみましたが、うまくいきません。その結果、私はリンゴを持ち、ユーザーの状態が存在する店舗のみを取得します。私はリンゴを持っているすべてのお店が欲しい。 – Goldie
どういうわけか私はまだ同じ結果を得ています。 – Goldie
@Goldie:分かりませんが、 'user_id'条件をJOIN節に移動すると違いがありますか? – FrustratedWithFormsDesigner