Count subquery

  • Onderwerp starter Onderwerp starter T-J
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

T-J

Gebruiker
Lid geworden
11 okt 2004
Berichten
138
Hey Helpmij'ers,

Ik zit met een sql query die ik niet voor elkaar krijg!

Het volgende is mijn probleem:
Ik heb 4 tabellen. Uit 3 tabellen haal ik gegevens en uit de 4 wil ik alleen een count hebben met aantal items dat er in zitten met betrekking tot een id die uit 1 van de eerste 3 tabellen komt.
Alle joins zijn verder goed, maar ik krijg het niet voor elkaar om de count in extra kolom weer te geven.

Hopelijk weten jullie een oplossing!

Alvast bedankt,

T-J
 
Code:
SELECT f.id, f.naam, f.datum, f.aantalkaarten, z.naam AS zaal, t.naam AS thema
FROM feest AS f, zaal AS z, thema AS t
WHERE f.locatie = z.id
AND f.organisatie = t.id
Hier in zit niet de count omdat ik geen idee meer heb waar ik hem vandaan moet halen.
Ik doe dat nu appart.
Code:
SELECT COUNT(*)
FROM aanmeldingen
WHERE feestid = (id van hier boven)
 
Probeer het eens met een GROUP BY?

[sql]
SELECT f.id, f.naam, f.datum, f.aantalkaarten, z.naam AS zaal, t.naam AS thema, COUNT(aanmeldingen.id) as aanmeldingen
FROM feest AS f, zaal AS z, thema AS t
INNER JOIN aanmeldingen a ON a.feestid = f.id
WHERE f.locatie = z.id
AND f.organisatie = t.id
GROUP BY f.id, f.naam, f.datum, f.aantalkaarten, z.naam AS zaal, t.naam AS thema
[/sql]

Ongeveer zo, denk ik.
 
[sql]SELECT f.id, f.naam, f.datum, f.aantalkaarten, z.naam AS zaal, t.naam AS thema, COUNT(a.feest_id) AS aanmeldingen
FROM feest AS f, zaal AS z, thema AS t
INNER JOIN aanmelding a ON a.feest_id
WHERE f.locatie = z.id
AND f.thema = t.id
AND f.id = a.feest_id
GROUP BY f.id, f.naam, f.datum, f.aantalkaarten, zaal, thema[/sql]

Heb nog een hoop aangepast, maar helaas. Krijg nu helemaal niks meer terug!
Hij moet altijd een feest terug geven. Dus als er geen aanmeldingen zijn moet count 0 terug geven.
Ik ga onder tussen kijken of het lukt, maar hulp is altijd fijn!
 
Laatst bewerkt:
Heb het eindelijk opgelost! :D

Oplossing:

[SQL]SELECT f.id, f.naam, f.datum, f.aantalkaarten, z.naam AS zaal,
t.naam AS thema,
COUNT(aanmelding.user_id) AS aanmeldingen
FROM zaal AS z, thema AS t,
feest AS f LEFT OUTER JOIN aanmelding ON feest_id = f.id
WHERE f.zaal= z.id AND f.thema = t.id
GROUP BY f.id[/SQL]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan