Entwickler-Ecke

Datenbanken - SQL/Firebird kategorische Limitierung einer Datenmenge


inriz - Di 31.10.06 11:22
Titel: SQL/Firebird kategorische Limitierung einer Datenmenge
hallo,

ich formuliere gerade ein query, das mir user ausgeben soll, die gruppen angehören.
dazu sind 3 tabelle nötig, die ich in meine query einbeziehen muss. soweit klappt alles ganz gut. der nächste schritt
ist jedoch ein wenig schwieriger zu lösen in meinen ermessen. und zwar soll eine gruppenübersicht erstellt werden, die jeweils maximal 3 zugehörige gruppenmitglieder anzeigen. nun möchte ich mein sql query so formulieren, das für jede gruppe die zugehörigen benutzer gezählt werden und maximal nur 3 benutzer einer gruppe im resultset auftauchen!

is das möglich?


SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
select 
fs.SECTION_NAME, fs.SECTION_ID, fs.ID, l.l_id, l.l_vorname 
from 
FAVOURIT_SECTIONS fs, FAVOURITS f, LOVER_1 l 
where
fs.ID = 94 and fs.ID = f.ID and fs.SECTION_ID = f.SECTION_ID and
f.F_ID = l.L_ID 
order 
by fs.SECTION_ID;


diese sql funktion sollte nun erweitert bzw. umformuliert werden.

ich danke im vorraus ;-)

Moderiert von user profile iconKlabautermann: list-i-Tags durch SQL-Tag ersetzt


UGrohne - Di 31.10.06 14:48

Kannst Du mal die Datenbankstruktur genauer erklären, weil anhand des Queries seh ich nicht wirklich, was da jetzt was ist.


hansa - Di 31.10.06 14:48

Wie sehen die drei beteilgten Tabellen denn aus ? Meine Glaskugel meint, laut Frage könnten sie eventuell sogar gleich aufgebaut sein. 8)


inriz - Di 31.10.06 15:32


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
[favourit_sections]
id : integer (benutzerid, FK von Tabelle lover_1)
section_id : integer (sektionsid, PK)
section_name : varchar 50 (...)
created : timestamp

[lover_1]
id : integer (PK)
vorname : varchar
nachname : varchar 
...

[favourits] (zuordnungstabelle - sektion- und benutzerid)
id : integer (FK, Benutzerid, Besitzer)
section_id : integer (fk)
f_id : integer (fk, Benutzerid - welchen benutzer hat er welcher sektion zugeordnet)
state : smallint
created : timestamp


hansa - Di 31.10.06 16:09

Was mir vorschwebte, geht damit nicht. Nächste Frage : reicht es aus, wenn Du 3 Zeilen hast und von links nach rechts werden im Dataset zuerst die Felder von Tabelle 1 aufgelistet, dann die von 2 und 3 ? Insgesamt aber nur 3. Das beträfe dann insgesamt 9 Datensätze aus den 3 Tabellen, die eben in 3 Zeilen darstellbar wären.