1
私はT1とT2の2つのテーブルを持っています。 T1とT2の間には1:nの関係があります。MySQL:同じテーブルでも異なる行に2回リンクする
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における1対応する行 - アクティブ= 0
とT2の行に対応するnは0〜T2でランク列が成立アプリケーションのUIでのエンドユーザーソートの値。
これは私が現在持っている単純なクエリです:
PK Active Rank
1 1 20
2 1 16
3 1 7
ので、正常に動作している:それは、この結果セットを返す
SELECT T1.PK, T2.Active, T2.Rank
FROM T1
LEFT JOIN T2 ON T1.PK = T2.T1_PK
WHERE T2.Active = 1
。
今は同じ結果セットに0 =アクティブ及びMIN(ランク)と行の値を取得したい:私は第二BYグループと、サブクエリと、JOINの周り再生
PK Active Rank Active Rank
1 1 20 0 5
2 1 16 0 6
3 1 7 null null
そしてHAVING、しかし役に立たない。
上記のコードはhttp://sqlfiddle.comにコピーでき、動作することに注意してください。
で行のランクの最小とt1_pkの集計値と結合し、この時間別の左を使用してみてください。 – GurV
私の質問は重複していませんでした(少なくともリンクされているものではありません)。 – Eliott