特定のタイプから最も多くのタイプのエントリを取得しようとします。明確にするために、例から始めます。私の列の型は実際には外部キーです。
例:
私のカウンターテーブル(〜1.500.000行)は、さまざまな信号機で見られたすべての車を数えます:
id, datetime, type, traffic_light_id
0, '09:59', 'red ford', 2
1, '10:00', 'black bmw', 1
2, '10:11', 'red ford', 1
3, '10:30', 'yellow ford', 1
4, '11:01', 'black bmw', 1
5, '11:09', 'red ford', 1
6, '11:18', 'green mercedes', 1
7, '11:20', 'black bmw', 2
8, '11:44', 'white renault', 2
9, '11:44', 'red renault', 1
各列にインデックスを取得しました。id は主キーです。
必要:
したがって、私が取得したいのは、traffic_light_id = 1 の 'black bmw' の結果です。結果は、'black bmw' で見られたタイプの車の前と後のすべてを合計する必要があります。
結果は次のようになります。
count, type, traffic_light_id
2, 'red ford', 1
1, 'yellow ford', 1
私の悪い解決策:
したがって、これまでの私の解決策は、type = 'black bmw' および traffic_light_id = 1 であるカウンターのすべてのカウントを反復処理することでした。
カウントごとに、php スクリプトで、traffic_light_id を持つ bevore と after seen 要素も取得します (カウントごとにさらに 2 つのクエリが作成されます)。
その後、配列内の指定された車のタイプで結果をグループ化し、その頻度を数えます。
そのようなものに対するより良い解決策はありますか?最善の方法は、SQL クエリを 1 つだけにすることです。