1
我有兩個表T1和T2。 T1和T2之間有1:n的關係。MySQL:連接兩次到同一個表,但不同的行
CREATE TABLE T1 (
PK INT
/* more columns here */
);
CREATE TABLE T2 (
PK INT,
T1_PK INT,
Active INT,
Rank INT
/* more columns here */
);
INSERT INTO T1 VALUES (1);
INSERT INTO T1 VALUES (2);
INSERT INTO T1 VALUES (3);
INSERT INTO T2 VALUES (1, 1, 1, 20);
INSERT INTO T2 VALUES (2, 1, 0, 15);
INSERT INTO T2 VALUES (3, 1, 0, 10);
INSERT INTO T2 VALUES (4, 1, 0, 5);
INSERT INTO T2 VALUES (5, 2, 1, 16);
INSERT INTO T2 VALUES (6, 2, 0, 11);
INSERT INTO T2 VALUES (7, 2, 0, 6);
INSERT INTO T2 VALUES (8, 3, 1, 7);
因此,在T1的每一行具有:
- 1對應行中的T2與Active = 1
- 0在與Active = 0
在T2秩列保存T2 N個相應的行最終用戶在應用程序UI中排序的值。
這是簡單的查詢我目前有:
SELECT T1.PK, T2.Active, T2.Rank
FROM T1
LEFT JOIN T2 ON T1.PK = T2.T1_PK
WHERE T2.Active = 1
它返回的結果集:
PK Active Rank
1 1 20
2 1 16
3 1 7
這樣工作正常。
現在我想在同一個結果集的Active = 0和MIN(等級),以獲得該行的值:
PK Active Rank Active Rank
1 1 20 0 5
2 1 16 0 6
3 1 7 null null
我有第二JOIN發揮各地,使用子查詢,使用GROUP BY和HAVING,但無濟於事。
請注意,上述代碼片段可以複製到http://sqlfiddle.com,並將工作。
聚合值的行@RiggsFolly這不是數據透視表。 – GurV
根據Gurwinder的問題,我的問題不是重複的(至少不是鏈接到的)。 – Eliott