Sagen wir, 100 ist ein Start und 101 ist ein Stop-Ereignis. Diese sollten sich abwechseln, und ich möchte herausfinden, wann sie es nicht tun. Jeder Start sollte ein vorheriges Stop-Ereignis haben. Angesichts dieser Tabelle:MySQL findet Zeilen
ID EVENT_ID
10 100 // a start event
11 101 // a stop event
12 99 // some irrelevant event
13 100 // .. and so on:
14 101
15 100
16 99 // some irrelevant event
17 100 // <-- duplicate event: bad
18 100 // <-- duplicate event: bad again.
19 101
Ich habe die DATETIME-Spalte weggelassen.
Wie finden Sie # 15 und # 17, da der Start nicht zweimal hintereinander erfolgen sollte?
Das Ergebnis in Form sein sollte:
EVENT_ID FROM_ID FROM_DATETIME UPTO_ID UPTO_DATETIME
100 15 2014-01-01 14:00 17 2014-01-01 16:00
ich mir vorstellen, es könnte wie folgt funktionieren:
- ein subselect nur von DATETIME- Ereignisse 100.101 geordnet sind.
- Gruppe von EVENT_ID Duplikate finden count()
mit
..aber ich das bezweifeln die Ergebnisse zusammenbrechen können, als Gruppe die Sortierung, nicht würde ignorieren
..und ich weiß, wie die zwei (oder mehr zu bekommen!) jeweilige DATETIME-Werte.
Ist es möglich, dies in MySQL zu finden? Ich könnte das in PHP erledigen, aber das würde ich lieber vermeiden.
Was alle Zeilen auswählen, die = 100 und wo die nächste Zeile nicht über 101 Wert event_id hat? Es kann getan werden. – Goikiu
@Goikiu Das ist die Frage. Was wäre die Syntax? –
Für die richtige Syntax wir brauchen einige erklärt. 1) die ID ist einzigartig? Können Sie ID dupliziert haben? Wird basierend auf bestellt? – Goikiu