Seite 1 von 1

group by und count über mehrere tabellen

Verfasst: Sa, 29.09.2012 01:07
von timoly
hi zusammen,
ich zerbreche mir gerade den kopf wie ich folgendes problem löse und bin fast am verzweifeln.
ich habe drei tabellen

tabelle:filme
tabelle:Texte (verweiß auf filme mit fid)
tabelle:links (verweiß auf filme mit fid)

zu jedem film können mehrere texte angelegt sein unabhängig davon zu jedem film xbeliebig viele links
in filme liegen drei filme drin zu jedem film existieren 3 links und jeweils zu jedem film ein Text

ich möchte wissen wie viele texte und links pro film existieren

ergebnis sollte so aussehen
film , clinks, ctexte
film1, 3, 1
film2, 3, 1
film3, 3, 1

mein bisheriger ansatz:
SELECT
f.*,
count(l.Fid) as clinks,
count(tx.Fid)as ctexte
FROM
film as f
LEFT JOIN (text as tx, link as l)
ON (f.Fid = tx.Fid and f.Fid = l.Fid)
GROUP BY
f.Fid

jetzt bin ich mir gar nicht mehr sicher ob ich das überhaupt mit group by lösen kann oder ob ich subselects nehmen muss

danke schon mal im voraus
lg timo

Re: group by und count über mehrere tabellen

Verfasst: Sa, 29.09.2012 10:20
von F3K Total
Moin,
timoly hat geschrieben:... group by lösen kann oder ob ich subselects nehmen muss...
wohl beides, in Base geht z.B. dies:

Code: Alles auswählen

SELECT "Film", "AL", COUNT( "Text" ) AS "AT" 
FROM (SELECT "ID", "Film", COUNT( "link" ) AS "AL" 
      FROM "filme" 
      JOIN "links" 
      ON "ID" = "IDF" 
      GROUP BY "ID", "Film")
      AS "CL" 
JOIN "text" 
ON  "CL"."ID" = "text"."IDF" 
GROUP BY  "CL"."Film", "CL"."AL"
Gruß R