前提・実現したいこと
MySQLにてクエリを作成してます。
そこで、一つ前のデータを変数に入れて、現データと一つ前のデータを比較して
変わっていればカウントを初期化、変わってなければカウントを続ける。
という処理をしたいです。
単純なselect文であればできたのですが、数テーブルを結合(join)した状態だと
うまくいかないです。
お力を貸してください。
★仮のデータとなります★
↓↓テーブルA
列1 | 列2 | 列3 |
---|---|---|
000001 | 01 | 001 |
000001 | 02 | 002 |
000001 | 03 | 003 |
000001 | 04 | 004 |
000002 | 01 | 001 |
000002 | 02 | 002 |
000002 | 03 | 003 |
000003 | 01 | 001 |
↓↓テーブルB
列1 | 列2 |
---|---|
000001 | AAA |
000002 | BBB |
000003 | CCC |
000004 | DDD |
000005 | EEE |
↓↓テーブルC
列1 | 列2 | 列3 |
---|---|---|
000001 | 001 | あああ |
000001 | 002 | いいい |
000001 | 003 | ううう |
000001 | 004 | えええ |
000002 | 001 | おおお |
000002 | 002 | かかか |
000002 | 003 | ききき |
000003 | 001 | くくく |
↓↓抽出したいデータ
列1 | 列2 | 列3 | 列4 | 列5 |
---|---|---|---|---|
000001 | あああ | 01 | 001 | 1 |
000001 | いいい | 02 | 002 | 2 |
000001 | ううう | 03 | 003 | 3 |
000001 | えええ | 04 | 004 | 4 |
000002 | おおお | 01 | 001 | 1 |
000002 | かかか | 02 | 002 | 2 |
000002 | ききき | 03 | 003 | 3 |
000003 | くくく | 01 | 001 | 1 |
該当のソースコード
SQL
1select A.* 2 , B.* 3 , @conter := if (@val = C.aaa, @counter + 1, 1) as cnt_val 4 , @val := A.route_code as sCode, 5 , @conter := 1 as cnter 6from テーブルA as A 7inner join テーブルB as B on 結合条件 8inner join テーブルC as C on 結合条件, 9(select @val := "") as val, 10(select @counter := 0) as cnt 11
試したこと
↓↓都合しないとうまくいきます
SQL
1select A.* 2 , @conter := if (@val = A.test, @counter + 1, 1) as cnt_val 3 , @val := A.route_code as sCode, 4 , @conter := 1 as cnter 5from テーブルA as A, 6(select @val := "") as val, 7(select @counter := 0) as cnt 8
補足情報(FW/ツールのバージョンなど)
MySQL 5.7.15
回答1件
あなたの回答
tips
プレビュー