MySQL におけるデータ取得で悩んでいる箇所があります。
簡略化すると、次のような構成のテーブルがあります。
●テーブルA(データ本体)
|DATA_ID|CAT_ID|START_TIME|
|1|1|2016-04-01 14:00:00|
|2|1|2016-04-01 13:25:00|
|3|1|2016-04-01 15:10:00|
|4|2|2016-04-01 15:00:00|
●テーブルB(カテゴリマスタ)
|CAT_ID|CAT_SUB_ID|NAME|
|1|test1|テスト1|
|2|test2|テスト2|
●得たい結果
|COUNTER|DATA_ID|START_TIME|CAT_ID|CAT_SUB_ID|
|1|3|2016-04-01 15:10:00|1|test1|
|1|4|2016-04-01 15:00:00|2|test2|
|2|1|2016-04-01 14:00:00|1|test1|
|3|2|2016-04-01 13:25:00|1|test1|
START_TIME列でDESCした上で、CAT_IDでグループ化された結果に対して逆順でカウンタ値を生成し、テーブルBのデータを取得する、というのが行いことになります。
●試した結果
SELECT (SELECT COUNT()+1 FROM tblA as T2 LEFT JOIN tblB on T2.CAT_ID = tblB.CAT_ID WHERE T2.START_DATE < T1.START_DATE and T2.CAT_ID = T1.CAT_ID and T2.START_DATE < "実行時刻" ORDER BY T2.START_DATE DESC ) AS counter , T1. FROM tblA AS T1 where T1.VIEW = 'TRUE' and T1.START_DATE < "実行時刻" ORDER BY T1.START_DATE DESC
●得られた結果
|COUNTER|DATA_ID|START_TIME|CAT_ID|CAT_SUB_ID|
|3|3|2016-04-01 15:10:00|--|--|
|1|4|2016-04-01 15:00:00|--|--|
|2|1|2016-04-01 14:00:00|--|--|
|1|2|2016-04-01 13:25:00|--|--|
●質問内容
こちら、上記の件を解決させたいのが第一なのですが、今後の為に次の点も教えていただけると助かります。
1)MySQLにおける、countの実行タイミング(上記の結果を見ると、WHERE句の実行時という認識で大丈夫でしょうか?)
2)サブクエリ実行時は、外部結合が使用できない? それとも上記の記述がまずい?
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。