login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Hoe plaats ik een CASE in mijn huidige query

Offline jolly9 - 06/09/2006 17:11
Avatar van jolly9Nieuw lid hoi,

Ik moet uit 3 tabellen een lijst met namen van steden toveren.

Dit is de huidige string die een lijst met namen van steden laat zien:
Hiermee weet ik dat er een omschrijving bestaat van die stad in het Nederlands.
Zo niet dan geeft ie m dus niet weer.

  1. <?php
  2. SELECT
  3. tabel2.main_id,
  4. tabel3.stad_naam,
  5. COUNT(*) AS count
  6. FROM
  7. tabel1,
  8. tabel2,
  9. tabel3
  10. WHERE
  11. tabel2.main_id=tabel1.main_id AND
  12. tabel2.omschrijving_id='1' AND
  13. tabel2.land='fr' AND
  14. tabel1.stad_id=tabel3.stad_id AND
  15. tabel3.taal='nl'
  16. GROUP BY stad_id
  17. ORDER BY stad_naam ASC
  18. ?>



Maar! de naam van de stad moet ook in het Nederlands ...indien aanwezig...
worden weergegeven. Dus niet Paris maar Parijs.

in tabel3 staat het volgende per stad:
- taal code
- naam van de stad
- id van de stad

Een stad in een andere taal heeft wel dezelfde stad_id
maar niet alle steden zijn in alle talen vertaald.
Deze velden staat er wel in maar met een lege stad_naam veld.

Hoe kan ik m.b.v. IF ELSE of CASE
dit in de bovenstaand query toevoegen?

Ik ben al geruime tijd op zoek naar een mogelijkheid
maar ik kom er maar niet uit :-(

Groetjes.

5 antwoorden

Gesponsorde links
Offline haytjes - 06/09/2006 20:43 (laatste wijziging 06/09/2006 22:59)
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
  1. SELECT tabel2.main_id,
  2. tabel3.stad_naam,
  3. COUNT(*) AS count
  4. FROM tabel1,
  5. tabel2
  6. LEFT JOIN tabel3
  7. ON (
  8. tabel1.stad_id=tabel3.stad_id AND
  9. tabel3.taal='nl'
  10. )
  11. WHERE tabel2.main_id=tabel1.main_id AND
  12. tabel2.omschrijving_id='1' AND
  13. tabel2.land='fr'
  14. GROUP BY stad_id
  15. ORDER BY stad_naam ASC


Hierdoor zal hij die die erbij hangen, als ze bestaan. Anders zal het Null geven. Zoekt anders een keer naar LEFT JOIN via google of hier op deze site, zodat je weet hoe ik het oplos, want er bestaat geen IF/ELSE in mysql.
Offline jolly9 - 06/09/2006 23:46
Avatar van jolly9 Nieuw lid IF/ELSE bestaat niet?

http://dev.mysq...ement.html
Offline haytjes - 07/09/2006 00:18
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
ja vanaf mysql 5.1 ...
Offline jolly9 - 07/09/2006 13:02 (laatste wijziging 07/09/2006 13:05)
Avatar van jolly9 Nieuw lid hoedan ook,

ik krijg met die query nog steeds de lijst met steden namen NULL
de bedoeling is echter dat ALS deze NULL bevatten de franse versie zouden kiezen...

of te wel, ik ben geen hout opgeschoten 

PS. ik zie ook niet waar Als nl NULL is, fr wordt gekozen...
Offline Thomas - 07/09/2006 13:58
Avatar van Thomas Moderator Als je een of meer namen/talen hebt voor een stadsnaam, dan zal in ieder geval die conditie van tabel3 (waarin wordt geeist dat de taal 'nl' is) moeten verdwijnen.

Ook kun je de resultaten niet groeperen per stad_id, want dan kunnen er meerdere resultaten op een hoop gegooid worden, en de vraag is dan maar welke stad_naam je over houdt.

Je zou dit op kunnen lossen met JOINs, maar die zijn denk ik niet eens nodig.

Daarnaast zou je gewoon een query kunnen bakken die alle gegevens aan elkaar hangt en ophaalt, en dan in PHP een array kunnen bouwen waar de resultaten per stad_id gegroepeerd worden. Je verplaatst hiermee dus enig sorteerprobleem naar PHP.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.193s