login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Left outer join werkt niet naar behoren. (Opgelost)

Offline Tuinstoel - 14/01/2010 14:38
Avatar van TuinstoelPHP expert Ik weet niet wat ik nu fout doe en begin me aardig dood te staren op het volgende probleemstuk:

Ik heb een tabel 'vereniging' waarin verenigingen staan. Ik wil een evenement bewerken als 'vereniging', en daar kan ik aangeven dat er meerdere verenigingen meedoen aan het organiseren van dit evenement. Dit wordt opgeslagen in de koppeltabel meewerkende met slechts 2 kolommen: verenigingID en evenementnummer.

Nu is het de bedoeling van het bewerken dat _alle_ verenigingen getoond worden, en de verenigingen die voorkomen in de tabel meewerkende de checkbox op aangevinkt staat. Ik stuit echter op een probleem met de SQL want hij pakt hem niet, of niet goed.

  1. SELECT v.verenigingID, v.verenigingnaam, m.evenementnummer FROM vereniging v LEFT OUTER JOIN meewerkende m ON m.verenigingID = v.verenigingID WHERE v.verenigingID != $currentVerenigingID


Aan de hand van m.evenementnummer wou ik controleren of de record voorkwam in de tabel (NULL of NOT NULL dus), maar naarmate er dus meer evenementen voorkwamen ging dit mis.

Nu heb ik dit tijdelijk opgelost door heel oneerbiedig gewoon alle verenigingen op te vragen met een query, en vervolgens per vereniging te controleren of ze er in staan, maar ik heb het idee dat het simpeler kan.

Groeten,
Tuinstoel.

4 antwoorden

Gesponsorde links
Offline ArieMedia - 14/01/2010 14:53 (laatste wijziging 14/01/2010 14:54)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
FROM vereniging v -> FROM vereniging AS v
JOIN meewerkende m -> JOIN meewerkende AS m

Edit: Zie dat je vraag anders..

Doet je query het ook zonder "AS"?
Offline Tuinstoel - 14/01/2010 15:02
Avatar van Tuinstoel PHP expert SQL heeft dat AS niet nodig, daar gaat de vraag ook totaal niet over. Met AS wijs je een kolom een andere naam toe in geval van dubbele kolomnamen. Het toewijzen van andere (verkorte) letters werkt gewoon hoor binnen SQL.
Offline ArieMedia - 14/01/2010 15:06
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Tuinstoel schreef:
SQL heeft dat AS niet nodig, daar gaat de vraag ook totaal niet over. Met AS wijs je een kolom een andere naam toe in geval van dubbele kolomnamen. Het toewijzen van andere (verkorte) letters werkt gewoon hoor binnen SQL.
Ik weet dat het verkorten kan, sterker nog dat gebruik ik 9 vd 10 keer.. Maar wist niet dat het zonder AS kon.
Offline Tuinstoel - 14/01/2010 15:14
Avatar van Tuinstoel PHP expert Hoo eens. Het kan ook met een subquery, helemaal vergeten.

  1. SELECT verenigingnaam, (
  2.  
  3. SELECT COUNT( * )
  4. FROM meewerkende
  5. WHERE meewerkende.verenigingID = vereniging.verenigingID
  6. AND evenementnummer =1
  7. ) AS tel
  8. FROM vereniging
  9. LIMIT 0 , 30
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.239s