다섯 개의 mysql 테이블이 있습니다.
상점LEFT JOIN 쿼리에 세 번째 테이블 포함
+----+--------------+--------------+ | 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
있습니다.
users
인 경우 shop_activity 테이블을 쿼리에 포함시켜 사용자 상태를 얻을 수 있도록해야하는 이유는 무엇입니까? id
= 1 적절한 상점 옆. 당신은 이런 식으로 뭔가를 시도 할 수
Shop1, NULL Shop2, status: 1
나는 이미 그런 식으로 시도했지만 작동하지 않습니다. 결과적으로 나는 사과가있는 가게와 사용자의 지위가있는 상점 만 얻는다. 나는 사과가있는 모든 상점을 원한다. – Goldie
어쨌든 나는 여전히 같은 결과를 얻습니다. – Goldie
@Goldie : 잘 모르겠지만'user_id' 조건을 JOIN 절로 옮기는 것이 효과가 있습니까? – FrustratedWithFormsDesigner