Problem mit einem Query

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Fabse
Mitglied
Beiträge: 1401
Registriert: 02.06.2003 15:10
Wohnort: Klagenfurt
Kontaktdaten:

Problem mit einem Query

Beitrag von Fabse »

Hallo!

Ich brauch ein Query das daten abhändig voneinander aus 3 verschiedenen tabellen holt.
Ich will wissen, wieviele Alben es in der Kathegorie Geburtstage gibt und wieviele Bilder es in der Kathegorie Geburtstage gibt.

Tabellenaufbau:
gallery_cathegory:
id | cathegory
1 | Geburtstage
2 | Urlaube

gallery_albums:
id | album | date | cat_id
1 | Album1 | 1153612746 | 1
1 | Album2 | 1153612758 | 1
2 | Album3 | 1153612750 | 2

gallery_photos:
id | photo | thumbnail | description | date | album_id
1 | photo-1.jpg | photo-2.jpg | Beim Feiern | 1153612819 | 1
2 | photo-3.jpg | photo-4.jpg | Beim saufen 1153613488 | 1
3 | photo-6.jpg | photo-5.jpg | Beim saufen 1153613490 | 1
4 | photo-8.jpg | photo-7.jpg | Beim saufen 1153613495 | 2

Irgendwie bekomm ich das nicht auf die reihe. Kann mir jemand helfen?
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Das ist imho gar nicht so einfach, deswegen wird bei phpBB auch die forum_id bei jedem einzelnen Post gespeichert...
Ich bin bis jetzt nur auf folgende Lösung gekommen, vielleicht geht es auch einfacher, kA. :wink:

Code: Alles auswählen

SELECT 'album_count' AS name, COUNT(a.id) AS count
	FROM gallery_cathegory c
	LEFT JOIN gallery_albums a
		ON a.cat_id = c.id
	WHERE c.id = {CAT_ID}
	UNION
		SELECT 'photo_count' AS name, COUNT(p.id) AS count
			FROM gallery_albums a2
			LEFT JOIN gallery_photos p
				ON p.album_id = a2.id
			WHERE a2.cat_id = {CAT_ID}
{CAT_ID} ist die ID deiner Kategorie.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Fabse
Mitglied
Beiträge: 1401
Registriert: 02.06.2003 15:10
Wohnort: Klagenfurt
Kontaktdaten:

Beitrag von Fabse »

Hallo!

Erstmal danke! Es funktioniert! ;)
Jetzt muss nur noch der kathegoriename und die kathegorie id ausgelesen werden. Die ausgelesene kathegorie id soll dann anstatt {CAT_ID} stehen.

Ich will das ganze dann in ne schleife packen damit das alles ausgegeben werden kann.

Kannst du mir da nochmals helfen?

lg
fabse
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Ehrlich gesagt würde ich das ganze dann in 2 Queries aufteilen, ist sowieso sinnvoller (oder wie schon oben erwähnt eine Spalte cat_id in der photos-Tabelle):

Code: Alles auswählen

SELECT c.id, c.cathegory, COUNT(a.id) AS album_count
   FROM gallery_cathegory c
   LEFT JOIN gallery_albums a
      ON a.cat_id = c.id

Code: Alles auswählen

SELECT COUNT(p.id) AS photo_count
   FROM gallery_albums a
   LEFT JOIN gallery_photos p
      ON p.album_id = a.id
   WHERE a.cat_id = {CAT_ID}
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Fabse
Mitglied
Beiträge: 1401
Registriert: 02.06.2003 15:10
Wohnort: Klagenfurt
Kontaktdaten:

Beitrag von Fabse »

OK aber wie pack ich das jetzt ein eine schleife damit kathegorie für kathegorie ausgegeben wird?
irgendwie steh ich aufm schlauch ;)
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Das erste Query gibt dir alle Kategorien und die Anzahl der Alben in der jeweiligen Kategorie zurück. Daraus machst du eine Schleife, in der du das zweite Query ausführst (und da hast du ja dann die ID der Kategorie :wink: ).
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Fabse
Mitglied
Beiträge: 1401
Registriert: 02.06.2003 15:10
Wohnort: Klagenfurt
Kontaktdaten:

Beitrag von Fabse »

aaah ok danke :)
Aber ich dachte wenn ich das so löse, dann ist das ziemlich unperformant!?

gruß, fabse
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Ich hab dir schon die Alternative gesagt. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Fabse
Mitglied
Beiträge: 1401
Registriert: 02.06.2003 15:10
Wohnort: Klagenfurt
Kontaktdaten:

Beitrag von Fabse »

Also zusätzliche spalte ist performanter?
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Jep. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Antworten

Zurück zu „Coding & Technik“