sql statement
hansi
- datenbank
Hallo!
ich habe eine tabelle mit einer spalte geraete_id. das kann so aussehen:
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
155 | text1
155 | text1
155 | text1
155 | text1
155 | text1
ich möchte nun pro geraete_id nur die ersten 4 eintraege aus der tabelle, damit ich sowas bekomme:
12 | text1
12 | text1
12 | text1
12 | text1
155 | text1
155 | text1
155 | text1
155 | text1
wie mache ich das??? ich müsste quasi die ausgabe eines jeden gleichen datensatzes nach der geraete_id auf 4 beschraenken. mit limit komme ich da wohl nicht weit...
danke!
Hi, hallo
Hängt von deinem DBMS ab. Hängt auch von deiner Plattform ab.
mit T-SQL wären sachen möglich wie SELECT TOP xx, Sub-Selects, Union-Joins
Die Frage ist natürlich auch, warum deine Tabelle so aussieht. Und wie dein Output aussehen soll. Willst du pro ID eine Ausgabe oder willst du eine Ausgabe mit je 4 Datensätzen per ID.
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
12 | text1
welche davon sind die "ersten 4" unmöglich für eine Datenbank zu sagen in dieser Form
Tip: Die fehlt ein Merkmal welches es möglich macht die "ersten 4" festzustellen
Tschau, tschüß,
Frank
Hängt von deinem DBMS ab. Hängt auch von deiner Plattform ab.
postgres auf linux
Die Frage ist natürlich auch, warum deine Tabelle so aussieht. Und wie dein Output aussehen soll. Willst du pro ID eine Ausgabe oder willst du eine Ausgabe mit je 4 Datensätzen per ID.
letzteres, also das:
12 | text1
12 | text1
12 | text1
12 | text1
Tip: Die fehlt ein Merkmal welches es möglich macht die "ersten 4" festzustellen
ja eben ich möchte die ersten vier eintraege mit der gleichen id und das für jede id, die in der tabelle vorkommt. ich müsste irgendwie die datensätze mit einer gleichen id zählen, nach dem vierten datensatz mit der hleichen id abbbrechen und dasselbe für alle ids!
Hi, hallo
Hängt von deinem DBMS ab. Hängt auch von deiner Plattform ab.
postgres auf linux
okay, I am out of the race :-(
Ich hab keine Ahnung, was wie von Postgre(s) geboten wird ... das ist eine Frage, die man Bio stellen sollte, der kennt sich besser aus.
Tschau, tschüß,
Frank
Hallo,
ja eben ich möchte die ersten vier eintraege mit der gleichen id und das für jede id, die in der tabelle vorkommt. ich müsste irgendwie die datensätze mit einer gleichen id zählen, nach dem vierten datensatz mit der hleichen id abbbrechen und dasselbe für alle ids!
wie schon gesagt wurde, fehlt Dir ein Merkmal, um 'die ersten 4 Datensätze' zu ermitteln.
Bedenke, daß SQL-Abfragen mengenorientiert sind und nicht satzorientiert. Es könnte also durchaus sein, daß bei wiederholter Abfrage die Reihenfolge der Daten unterschiedlich sein kann, wenn nicht eine eindeutige Sortierung vorgenommen werden kann.
Vorstellbar wäre es imho, wenn Du zur Tabelle noch ein Feld hinzufügst, in welchem die Datensätze pro ID durchnummeriert sind
12 | text1 | 1
12 | text1 | 2
12 | text1 | 3
12 | text1 | 4
12 | text1 | 5
12 | text1 | 6
12 | text1 | 7
55 | text1 | 1
55 | text1 | 2
55 | text1 | 3
55 | text1 | 4
55 | text1 | 5
55 | text1 | 6
55 | text1 | 7
55 | text1 | 8
und dann eine Abfrage formulierst, mit der Du nur jene Datensätze ausählst, bei denen dieses Feld eben kleiner oder gleich 4 ist.
Grüße
Klaus
Hi, hallo
ich hatte die Hoffnung, dass hansi da von selbst draufkommt :-)
Tschau, tschüß,
Frank