SQL Anfrage

Helios co.

Lt. Commander
Registriert
März 2005
Beiträge
1.863
Hallo,

ich sitze schon seit längerem an folgendem Problem und komme kaum weiter
(bin aber auch ein SQL nube)


Ich habe 2 Tabellen:
Eine Tabelle mit Benutzern, die als Primärschlüssel eine Benutzerid haben.
Die zweite Tabelle enthält Namen von Dokumenten etc., die mittels dokumentbesitzerid eindeutig einem Benutzer zugeordnet sind.

Die Anfrage die ich brauche, ist die, dass ich die Anzahl der Benutzer haben will, die mehr als 5 Dokumente haben.

mit: select benutzerid,dokbesitzerid from benutzer,dok where benutzerid=dokbesitzerid;
kriege ich eine Tabelle, die die Übereinstimmungen anzeigt
sowas wie:
1 1
1 1
1 1
2 2
2 2

Jetzt brauche ich aber (mittels count ?) nur die Anzahl bei der es mehr als 5 Übereinstimmungen gibt.(imobigen Beispiel wären das z.B. 0)

Leider komme ich hier nicht auf den Trichter.

Ich wäredankbar für jeden Rat.
Thx
 
Bin zwar auch keine SQL Profi aber so es gehen:
PHP:
SELECT 
    *
FROM
    `documents` `t1`
    LEFT JOIN
        `user` `t2`
    ON
        `t1`.`id`=`t2`.`id`
WHERE
    COUNT(`t1`.`id`) >= 5
GROUP BY `t2`.`id`
 
funzt leider nicht.
ERROR:aggregates not allowed in WHERE clause

dürfte sich auf das COUNT beziehen
:(
 
Was hast du für eine Datenbank? ( Oracle, MySql usw. ) ?
 
Code:
Select * 
from benutzer b, Dok d
where b.id = d.id
group by b.id
having count(d.id)>5


Vllt sowas in der Art. Ich kenne mich allerdings mit postgresql nich wirklich gut aus, aber vll hilft es ja weiter.

mfg
BaRtLeBy_
 
Zuletzt bearbeitet:
Code:
Select * 
from benutzer b, Dok d
where b.id = d.id
group by b.id
having count(d.id)>5

Verstehe ich das richtig, dass du unter benutzer b einen ganz bestimmten Benutzer meinst?
Wenn ja, dann ist es nicht ganz das was ich brauche.

Ich brauche die Anzahl der Benutzer (also aller! Benutzer) die mehr als 5 Dokumente haben.
 
Code:
SELECT count(*) FROM benutzer AS b WHERE (SELECT count(*) AS anzahl FROM dok AS d WHERE d.dokbesitzerid = b.benutzerid) > 5
 
Zuletzt bearbeitet:
Code:
SELECT Benutzer.BenutzerID, Benutzer.Benutzername, Benutzer.Echtername FROM
Benutzer, Doc WHERE Benutzer.BenutzerID=Doc.DocbesitzerID GROUP BY
Benutzer.BenutzerID, Benutzer.Benutzername, Benutzer.Echtername HAVING
count(*)>2;

das funzt :D:D:D

Trotzdem vielen Dank euch allen!
 
Zurück
Oben