좋아,이 문제가있어. 나는 다음과 같은 테이블이 있습니다SQL 다른 조인 조건으로 같은 필드를 사용하는 방법?
member
id | username | role_id | full_name |
1 | [email protected] | 1 | administrator |
2 | [email protected] | 2 | Sunkist |
3 | [email protected] | 2 | BlueJam |
4 | [email protected] | 3 | Fresh Shop |
5 | [email protected] | 3 | Other Shop |
role
id | role |
1 | superadmin |
2 | vendor |
3 | shop |
fruits
id | fruit_name | barcode | vendor_id |
1 | banana | 12345 | 2 |
2 | melon | 23456 | 2 |
3 | apel | 34567 | 3 |
4 | orange | 45678 | 3 |
5 | papaya | 56789 | 2 |
shop_base
id | fruit_id | member_id |
1 | 1 | 4 |
2 | 1 | 5 |
3 | 2 | 4 |
4 | 2 | 5 |
5 | 3 | 5 |
6 | 4 | 5 |
7 | 5 | 5 |
나는이 쿼리 괜찮아 :
SELECT f.barcode, f.fruit_name, m.full_name AS vendor, f.id AS fruit_id
FROM fruits AS f
LEFT JOIN member AS m ON f.vendor_id = m.id
WHERE f.vendor_id > 0
GROUP BY f.barcode
ORDER BY f.barcode DESC
결과 :
barcode | fruit_name | vendor | fruit_id |
56789 | papaya | Sunkist | 5 |
45678 | orange | BlueJam | 4 |
34567 | apel | BlueJam | 3 |
23456 | melon | Sunkist | 2 |
12345 | banana | Sunkist | 1 |
하지만 지금은이 같은 가게 열을 추가해야합니다
barcode | fruit_name | vendor | fruit_id | shop_name |
56789 | papaya | Sunkist | 5 | Other Shop |
45678 | orange | BlueJam | 4 | Other Shop |
34567 | apel | BlueJam | 3 | Other Shop |
23456 | melon | Sunkist | 2 | Fresh Shop, Other Shop |
12345 | banana | Sunkist | 1 | Fresh Shop, Other Shop |
이것은 내가 지금까지 얻은 방법이지만, 방법은 shop_name 필드에 null를 돌려 :
SELECT f.barcode, f.fruit_name, m.full_name AS vendor, f.id AS fruit_id, GROUP_CONCAT(CONCAT(CASE WHEN m.id = s.member_id THEN m.full_name END) SEPARATOR ', ') shop_name
FROM fruits AS f
LEFT JOIN member AS m ON f.vendor_id = m.id
LEFT JOIN shop_base AS s ON m.id = s.member_id
WHERE f.vendor_id > 0
GROUP BY f.barcode
ORDER BY f.barcode DESC
나는 proble이에 생각 : "GROUP_CONCAT (CONCAT (CASE m.id = s.member_id THEN m.full_name END) SEPARATOR ',') shop_name" shop_name 및 공급 업체는 member.role_id의 동일한 입력란에서 온 것입니다.
아무도 도와 줄 수 없습니까? 나는 매우 고맙게 생각할 것이다 :
는'0'는 뜻 A' 후'무엇입니까? 그게 문법 오류 같아. – Barmar
'm.id = s.member_id'는 항상 참이됩니다. 왜냐하면 그것은 결합의 'ON'조건이기 때문입니다. – Barmar
@Barmar 죄송합니다. 내 질문에 대한 답을 쓸 때 손가락이 어긋나는 것 같습니다. – fandiahm