[gelöst] Aufeineinderfolgende "Nicht-Null" Daten zählen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

[gelöst] Aufeineinderfolgende "Nicht-Null" Daten zählen

Beitrag von F3K Total »

Hallo zusammen,
ich habe da ein kniffliges Problem in meiner Base-embedded HSQLDB und möchte es gerne per SQL lösen. Folgende Situation:

In einer Tabelle gibt es drei Spalten, Integer,Integer,Integer: ID_Person, ID_Task, Points
Das sieht dann z.B. so aus:

ID_Person|ID_Task|Points
1 1 1
1 2 0
1 3 1
1 4 1
1 5 1
1 6 0
2 1 1
2 2 0
2 3 1
2 4 0
2 5 1
2 6 0
3 1 1
3 2 0
3 3 1
3 4 1
3 5 1
3 6 1
. . .
. . .
. . .
Nun möchte ich Folgendes erreichen:
Die Person (1,2,3 ....) bei der in der letzten Spalte "Points", die 1 drei oder mehr als dreimal direkt hintereinander vorkommt, bekommt ein "true", alle anderen ein "false". In meinem Beispiel also Person 1 und Person 3.

Das Abfrageergebnis wäre hier also:
ID_Person|threeTimes
1 true
2 false
3 true

Ich würde mich über Hilfe freuen, brech mir gerade die Haxen :)

Gruß Rik

edit: ... drei oder mehr als dreimal ...
Zuletzt geändert von F3K Total am Do, 05.05.2011 22:18, insgesamt 1-mal geändert.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Aufeineinderfolgende "Nicht-Null" Daten zählen

Beitrag von DPunch »

Aloha

Du meinst in der Art?

Code: Alles auswählen

SELECT DISTINCT
	"a"."ID_Person"
FROM
	"Tabelle1" AS "a"
WHERE
	"Points" = 1 
	AND (SELECT "Points" FROM "Tabelle1" WHERE "ID_Task" = "a"."ID_Task" + 1 AND "ID_Person" = "a"."ID_Person") = 1
	AND (SELECT "Points" FROM "Tabelle1" WHERE "ID_Task" = "a"."ID_Task" + 2 AND "ID_Person" = "a"."ID_Person") = 1
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Aufeineinderfolgende "Nicht-Null" Daten zählen

Beitrag von F3K Total »

Hallo DPunch,
ehrlich, insgeheim habe ich gehofft das Du mal schaust, und gewußt, dass, wenn einer eine kurze Lösung hat, dann Du!
Ja, genau das ist es. :D :D :D

Vielen Dank dafür.

Beste Grüsse von Rik
Antworten