SQl: Limit + COUNT bei Join

Hey.

Ich verwende derzeit PGSQL.
Ich möchte im Rahmen einer Bilderverwaltung folgendes machen:

users_picscollection:
collectionid, collectionname, userid
1 , test, 2
2, test2, 2

users_picscollection_pics:
collectionid, picname
1, jojo
2, jojo2
3, jojo3
4, hihi1
5, hihi2

Ich habe: die userid

Ich möchte nun folgendes haben:

  • alle albennamen und ids aus tabelle 1 wo userid=2 ist
  • die anzahl der fotos in jedem Album aus tabelle 2
  • nur EIN einzigen Bildnamen aus tabelle2 für jedes Album
SELECT t1.collectionid, t1.collectionname,COUNT(t2.picname), t2.picname  
								  FROM schemaname.users_picscollection AS t1  
								  JOIN schemaname.users_picscollection_pics AS t2 ON t2.collectionid=t1.collectionid  
								  WHERE t1.uid=".intval($uid)

klappt nicht. Kein Ergebnis, kein Fehler komischerweise auch.

Gruß.

  1. Hallo,

    [..]
    t1.uid=".intval($uid)

    Sollte das nicht userid lauten?

    Und warum moechtest du fuer jeden gefundenen Eintrag die Anzahl aller Eintraege auslesen?

    Gruesze,
    Christopher

    1. Hallo,

      [..]
      t1.uid=".intval($uid)
      Sollte das nicht userid lauten?

      Nein. Die ID kommt ja von außen.

      Und warum moechtest du fuer jeden gefundenen Eintrag die Anzahl aller Eintraege auslesen?

      Es geht um ein Fotoalbum und ich möchte von jedem Fotoalbumd ie Anzahl der darin enthaltenen Fotos haben und ein Foto als Vorschaubild.

  2. yo,

    klappt nicht. Kein Ergebnis, kein Fehler komischerweise auch.

    ich hätte getippt, du benutzt mysql, weil jedes vernüftige dbms würde bei dieser abfrage eine fehlermeldung auswerfen, da in dieser konstellation die GROUP BY klausel fehlt. zu klären wäre noch welchen einzigen bildnamen du den willst, fvon den mögliche. aber hier mal ein beispiel:

    SELECT t1.collectionid, t1.collectionname, COUNT(*) Anzahl, MIN(t2.picname) Bild
    FROM users_picscollection AS t1
    INNER JOIN users_picscollection_pics AS t2 ON t2.collectionid=t1.collectionid
    WHERE t1.uid= hier_ID_variable
    GROUP BY t1.collectionid
    ;

    Ilja