Toon posts:

[MySQL] IF/ELSE of CASE in een query

Pagina: 1
Acties:

Verwijderd

Topicstarter
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.

[code=sql]

SELECT
tabel2.main_id,
tabel3.stad_naam,
COUNT(*) AS count
FROM
tabel1,
tabel2,
tabel3
WHERE
tabel2.main_id=tabel1.main_id AND
tabel2.omschrijving_id='1' AND
tabel2.land='fr' AND
tabel1.stad_id=tabel3.stad_id AND
tabel3.taal='nl'
GROUP BY stad_id
ORDER BY stad_naam ASC

[/code=php]

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.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
SQL:
1
2
3
Select foo, bar, ..., ..., Case when <something> then <x> else <y> end case as <somefield>, ..., ...
from ....
where ...

>> http://dev.mysql.com/doc/refman/5.0/en/case-statement.html
Zo moeilijk was dat niet te vinden...

Verder klinkt het alsof je eens naar (Left) joins moet kijken, maar omdat je query ubervaag is (qua notatie en namen) heb ik geen zin om dat te controleren.

[ Voor 34% gewijzigd door RobIII op 06-09-2006 15:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
RobIII schreef op woensdag 06 september 2006 @ 15:04:
SQL:
1
2
3
Select foo, bar, ..., ..., Case when <something> then <x> else <y> end case as <somefield>, ..., ...
from ....
where ...

>> http://dev.mysql.com/doc/refman/5.0/en/case-statement.html
Zo moeilijk was dat niet te vinden...
die had ik uiteraard ook al gevonden... maar omdat de query zo ingewikkeld is ( ik vraag me af of het wel eenvoudiger kan ) vraag dus iemand te helpen met CASE...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Je condities hebben alleen invloed op je select clausule, dus het al dan niet ingewikkeld zijn van je query heeft verder totaal geen invloed op je probleem? :) Daarnaast geloof ik best dat je je query ingewikkeld vindt, maar zonder gedetailleerde omschrijving van je database (en zonder logische namen voor je tabellen; tabel1, tabel2, tabel3 ... tabelx is nou niet bepaald intuïtief te noemen) kunnen we daar niet veel zinnigs over zeggen.

Overigens heeft dit probleem niets met PHP te maken, dus die verwijzing sloop ik uit je titel.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.