login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Left outer Join met 3 tabellen (Opgelost)

Offline Rick33 - 09/01/2010 21:34 (laatste wijziging 10/01/2010 12:09)
Avatar van Rick33Nieuw lid Hallo,

Ik heb 3 tabellen:

Gebruikers
Doelpunten
Wedstrijd

Ik wil een lijst maken van de namen en het aantal scores. Dit gaat goed door de tabellen gebruikers en doelpunten met een LEFT OUTER JOIN te verbinden. Ik krijg netjes alle namen en het aantal scores.

Nu wil ik dat alleen het aantal doelpunten wordt opgeteld die op een bepaalde datum zijn gemaakt weergeven, deze datums staan in de tabel wedstrijd. Nu probeer ik het met de volgende sql query wat alleen de namen plus scores weergeeft van de mensen die gescoord hebben. Wat ik wil is dat alle namen worden weergeven, en niet alleen van diegenen die gescoord hebben.

  1. SELECT gebruikers.gebruikersnaam, COUNT(doelpunten.doelpuntID) AS aantaldoelpunten, gebruikers.id
  2. FROM gebruikers
  3. LEFT OUTER JOIN doelpunten ON gebruikers.id = doelpunten.id
  4. LEFT OUTER JOIN wedstrijd ON doelpunten.wedstrijd_ID = wedstrijd.wedstrijdID
  5. WHERE date = 20100107
  6. GROUP BY gebruikersnaam
  7. ORDER BY aantaldoelpunten DESC


Weet iemand de juiste manier om dit te doen?

2 antwoorden

Gesponsorde links
Offline Tuinstoel - 10/01/2010 12:04
Avatar van Tuinstoel PHP expert Je bent een = vergeten bij doelpunten.wedstrijd_ID ...?

Kun je misschien even schetsen wat je in gedachten had?
Tip overigens van mij is om te zorgen dat je geen problemen krijgt met kolomnamen. Wie weet gebruik je 'date' in gebruikers of wat dan ook. doe dan ff .. FROM gebruikers g, en dan vervolgens g.date ofzo ;)
Bedankt door: Rick33
Offline Rick33 - 10/01/2010 12:19 (laatste wijziging 10/01/2010 18:26)
Avatar van Rick33 Nieuw lid
Tuinstoel schreef:
Je bent een = vergeten bij doelpunten.wedstrijd_ID ...?

Kun je misschien even schetsen wat je in gedachten had?
Tip overigens van mij is om te zorgen dat je geen problemen krijgt met kolomnamen. Wie weet gebruik je 'date' in gebruikers of wat dan ook. doe dan ff .. FROM gebruikers g, en dan vervolgens g.date ofzo ;)


Ik probeer het zo goed mogelijk uit te leggen.

Ik voeg doelpunten toe aan de tabel doelpunten dit wordt gedaan met de id van de gebruiker (van tabel gebruiker), en het id van de wedstrijd (van tabel wedstrijd).

Om het aantal doelpunten per gebruiker te berekenen gebruik ik count om het aantal id's van de gebruiker te tellen.

Nu wil ik dat alle namen op het scherm komen met de scores (dus ook van diegenen die geen score hebben), Alleen wil ik ervoor kiezen om van een bepaalde datum het aantal scores te laten zien.
Die datum staat in de tabel wedstrijd.

De sql query die ik nu gebruik (= was ik inderdaad vergeten) laat netjes de namen plus scores zien van die datum, alleen ik krijg de andere namen die geen score hebben niet meer in beeld.

Ik hoop dat het zo een beetje duidelijk is wat ik bedoel.

Edit: Het lijkt zo te werken:

  1. SELECT gebruikers.gebruikersnaam, COUNT(doelpunten.doelpuntID) AS aantaldoelpunten, gebruikers.id
  2. FROM doelpunten
  3. INNER JOIN wedstrijd ON wedstrijd.wedstrijdID = doelpunten.wedstrijd_ID
  4. RIGHT OUTER JOIN gebruikers ON gebruikers.id = doelpunten.id
  5. AND date = 20100107
  6. GROUP BY gebruikersnaam
  7. ORDER BY aantaldoelpunten DESC
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.16s