SQL: 두 테이블에서 세 번째 테이블과 관련된 데이터를 선택합니다.
세 개의 테이블이 있습니다.
Table Relations(buyerID INTEGER, sellerID INTEGER)
buyerID and sellerID are foreign keys
+---------+---------+
| buyerID | sellerID|
+---------+---------+
| 1 | 3 |
| 2 | 3 |
| 3 | 2 |
| 4 | 1 |
| 5 | 2 |
+---------+---------+
Table Buyers(ID INTEGER, name VARCHAR(30), phone VARCHAR(10))
ID is a primary key
+----+-------+--------------+
| ID | name | phone |
+----+-------+--------------+
| 1 | Eric | 9872554-1260 |
| 2 | Julia | 897-953-3210 |
| 3 | Josh | 999-123-3250 |
| 4 | Martha| 098-213-8270 |
| 5 | Jill | 909-457-3990 |
+----+-------+--------------+
Table Sellers (ID INTEGER, name VARCHAR(30), phone VARCHAR(10))
+---------+----------+--------------+
| ID | name | phone |
+---------+----------+--------------+
| 1 | Nathan | 321-45-6789 |
| 2 | Rob | 112-22-3463 |
| 3 | Maria | 404-040-0804 |
| 4 | Logan | 305-954-7781 |
| 5 | Smith | 810-123-5556 |
+---------+----------+--------------+
판매자 ID, 구매자 ID를 출력하기 위해 Relations 테이블을 사용해야 합니다.에이전트 이름별로 정렬된 ID 쌍.기본적으로 Relations 표를 살펴보고, 첫 번째 셀러 ID부터 각 셀러 ID를 선택하고, 모든 관련 구매자와 함께 인쇄한 후 다음 셀러로 넘어갑니다.출력은 다음과 같습니다.
+---------+------------+
| Seller | Buyer |
+---------+------------+
|Maria | Eric |
|Maria | Julia |
|Nathan | Martha |
|Rob | Josh |
|Rob | Jill |
+---------+------------+
현재 사용하고 있는 문장은 다음과 같습니다.
SELECT s.name,b.name FROM Seller s, Buyers b
INNER JOIN Relations r ON (r.sellerID = s.ID )
ORDER BY s.name;
그러나 이것은 "알 수 없는 열 "r.seller"를 제공합니다.'on clause'의 ID 오류 어떻게든 조인을 잘못 사용하고 있다는 것을 알고 있지만, 이제 어떻게 해야 할지 정확히 알 수 있습니다.어떤 도움이라도 감사합니다.
이거면 될 것 같아요.
SELECT
b.name AS Seller,
s.name AS Buyer
FROM
Relations r
LEFT JOIN
Buyers b
ON
r.buyerID = b.ID
LEFT JOIN
Sellers s
ON
r.sellerID = s.ID
GROUP BY
b.name,
s.name
ORDER BY
b.name,
s.name
원하는 출력을 정확하게 얻으려면 이 쿼리(SQLFiddle)를 사용합니다.이상한 점이 있습니다.ORDER BYb.name에 의한 정렬에 따라 마지막 2개의 엔트리(셀러 Rob과 일치하는 항목)의 순서가 원하는 항목에 따라 변경됩니다.다만, b.id 대신에 b.name 를 사용하는 것이 좋습니다.
SELECT s.name AS Seller, b.name AS Buyer
FROM Relations r
JOIN Sellers s
ON r.sellerID = s.ID
JOIN Buyers b
ON r.buyerID = b.ID
ORDER BY s.name, b.id
출력:
Seller Buyer
Maria Eric
Maria Julia
Nathan Martha
Rob Josh
Rob Jill
언급URL : https://stackoverflow.com/questions/49888699/sql-select-data-from-two-tables-that-are-related-by-a-third
'programing' 카테고리의 다른 글
| 이클립스 컴파일 오류:'클래스 이름' 형식의 계층이 일치하지 않습니다. (0) | 2023.01.04 |
|---|---|
| Java에서 개체를 삭제하시겠습니까? (0) | 2023.01.04 |
| Vuetify Nuxt.js : 이미지 태그에 URL 링크를 추가하는 방법 (0) | 2023.01.04 |
| Python 대화형 세션을 저장하는 방법 (0) | 2023.01.04 |
| set Timeout 또는 set Interval? (0) | 2023.01.04 |