2016-10-22 26 views
0

event_id = 17のフィールドと、より高いg_event_idを持つテーブルの他のレコードがない1つのテーブルの行数をカウントする必要があります。 prim_cidと同じ値。私のテーブルには電話のイベントが含まれています。同じ呼び出しのすべてのイベントは、フィールド「prim_cid」を共有します。フィールドevent_id = 17私は、コールが待ち行列に入っていることを知っていますが、すぐにそのテーブルに新しいエントリがあります(同じprim_cid)が、他のevent_idが発生します。ですから、event_id = 17の行を数える必要があります。後で同じprim_cidを持つレコードはありません。id = xと同じテーブルでグループ化された他のmax(id)のSQLカウント行

マイテーブル:

イベント:これから

g_event_id prim_cid event_id event_time 
---------- -------- -------- ---------- 
1   1   16   2016-10-21 16:00:00 
2   1   17   2016-10-21 16:00:01 
3   1   18   2016-10-21 16:00:02 
4   2   15   2016-10-21 16:01:01 
5   2   17   2016-10-21 16:01:02 
6   3   16   2016-10-21 16:02:01 
7   3   17   2016-10-21 16:02:02 
8   3   18   2016-10-21 16:02:38 

私は結果を取得したい:

1 

を(のみprim_cid 2がフィールドg_event_idには高い記録を持っていないとして) また、私はレコードを得る場所を選択したいと思う:

他には

はもちろん、選択したSQL :)

+0

を行きますなぜ「もちろん」? – Strawberry

答えて

1

あなたはEVENT_ID 17を「知っている」が、17-イベントよりも、高くなっている他のg_event_idを持っていないprim_cidsをカウントします。あなたが同じ文に対して次のSELECT句を使用する2番目のステートメントを満たすために

SELECT COUNT(DISTINCT seventeens.`prim_cid`) 
FROM `events` AS seventeens 
    LEFT JOIN `events` AS laters ON (seventeens.`prim_cid` = laters.`prim_cid` AND laters.`g_event_id` > seventeens.`g_event_id`) 
WHERE seventeens.`event_id` = 17 
    AND ISNULL(laters.`prim_cid`) 

:これは、SQLに直接変換

ここ
SELECT DISTINCT seventeens.* 
FROM ... 
+0

ありがとう、しかし、私はこのエラーが表示されます:クエリを実行中にエラーが発生しました。フィールドリストの 列 'prim_cidは' LEFTがON(seventeens.'prim_cid' = laters.'prim_cid 'events' ASのlatersを登録しようseventeens AS – Kristian

+0

がevents'' FROM SELECT COUNT(DISTINCT seventeens.prim_cid) にそれを変更曖昧です'とlaters.g_event_id'> seventeens.'g_event_id') ここでseventeens.event_id' = 17 とISNULL(laters.prim_cid') 作品!どうもありがとう! – Kristian

+0

訂正していただきありがとうございます。接頭辞は書面で失われました。 – Arrmaniac

1

あなたは:)

SELECT COUNT(ev1.prim_cid) 
FROM events ev1 
WHERE ev1.event_id = 17 
AND (SELECT prim_cid 
      FROM events 
      WHERE g_event_id > ev1.g_event_id 
      AND prim_cid = ev1.prim_cid) IS NULL; 
+0

これは 'count(distinct) 'を使わないので、実際には受け入れられた答えより良いアプローチです。しかし、このバージョンは 'not exist'を使って書かれたほうが良いでしょう。 –

+0

多くのありがとう@Gordon私は存在しないと思いますが、NULLは単なる同じですが、読みやすさの点で私は存在しないことが良いということに同意します。 – noodlesegg

+0

この場合、 'prim_cid'は' NULL'(おそらくは)になることができないので、これらは同じように起こります。 –

関連する問題