PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Anzahl von Einträgen mit gleicher Fremdschlüssel-ID (http://www.selfphp.de/forum/showthread.php?t=25002)

toomuchcoffee 03.07.2013 12:56:20

Anzahl von Einträgen mit gleicher Fremdschlüssel-ID
 
Hallo,

ich verzweifle so langsam an einer Abfrage. Da ich auch anch stundenlangem "googeln" nicht checke, wie ich die Abfrage umsetze, sehe ich mich gewzungen die Hilfe eines Forums anzufordern.

Erläuterung:
In meiner Datenbank für Fernsehserien sind (u.a.) drei Tabellen.

produzent, serie und episode

Jeder Eintrag in produzent hat eine ID, jeder Eintrag in serie hat eine Spalte produzent_id, jeder Eintrag in episode hat eine Spalte serie_id

Wenn ich nun nach dem Namen einer Serie suche dann möchte ich in der Übersicht der gefundenen Serien folgende Werte abbilden:

- Den Namen des Studios p.name
- Den Namen der Serie s.name
- Die ID der Serie für weiterführende Infos s.id
- Das Jahr des Serienstarts s.year
- Die Anzahl der Episoden einer Serie .... ????

Und genau da hapert es.

Ich habe bereits nested selects und einige joins und so ausprobiert, aber nichts hat mir das Ergebnis geliefert, das mir vorschwebt.

Die derzeitig implementierte Übersicht wird mit

Code:

SELECT p.name AS pName, s.name AS sName, s.year, s.id
FROM produzent p, serie s
WHERE p.id = s.produzent_id
ORDER BY sName ASC, s.year ASC

erzeugt. Das ist auch alles gut soweit. Aber als Gimmick würde ich schon gerne noch die Anzahl der Episoden mit in der Übersicht zeigen und bekomme das nicht hin. Mein letzer (gescheiterter) Versuch war...

Code:

SELECT p.name AS pName, s.name AS sName, s.year, s.id, COUNT(e.serie_id)
FROM produzent p, serie s, episode e
WHERE p.id = s.produzent_id AND e.serie_id = s.id
ORDER BY sName ASC, s.year ASC

Könnt ihr mir bitte auf die Sprpnge helfen, wie ich das angehen muss, damit ich zu jeder Serie noch die Anzahl der episoden abfragen kann?

Vielen Dank und freundliche Grüße,
toomuchcoffee

Ckaos 03.07.2013 21:04:05

AW: Anzahl von Einträgen mit gleicher Fremdschlüssel-ID
 
Hi,

ich denke ein Subselect ala
Code:

SELECT p.name AS pName, s.name AS sName, s.year, s.id,
(SELECT COUNT(serie_id) FROM episode WHERE serie_id=s.id) as eAnzahl
FROM produzent p, serie s
WHERE p.id = s.produzent_id ORDER BY sName ASC, s.year ASC

*ungetestet*
oder nen Join auf nen select ala
Code:

SELECT p.name AS pName, s.name AS sName, s.year, s.id,e.eAnzahl
FROM produzent p, serie s
left join (SELECT serie_id,COUNT(serie_id) FROM episode group by serie_id) as e
on e.serie_id=s.id
WHERE p.id = s.produzent_id ORDER BY sName ASC, s.year ASC

*ungetestet*
vielleicht bringt dich das auf ideen.

MfG

CKaos

toomuchcoffee 05.07.2013 07:53:33

AW: Anzahl von Einträgen mit gleicher Fremdschlüssel-ID
 
Moin, moin...

vielen lieben Dank. Der Ansatz mit dem subselect hat auf Anhieb geklappt!

Schon mal ein angenehmes Wochenende!

Gruß,
toomuchcoffee

ichbins 08.07.2013 23:08:38

AW: Anzahl von Einträgen mit gleicher Fremdschlüssel-ID
 
So müsste es auch gehen:

SELECT produzent.Name, serie.name, serie.jahr, serie.ID, Count(episode.serie_id) AS Episodenanzahl
FROM (produzent LEFT JOIN serie ON produzent.ID = serie.produzent_id) LEFT JOIN episode ON serie.ID = episode.serie_id GROUP BY produzent.Name, serie.name, serie.jahr, serie.ID ORDER BY serie.name, serie.jahr;

Grüße
Franco


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:16:59 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.