Goedemorgen.
Ik zit met een probleem, ik heb drie (test) tabellen aangemaakt, header, details en details2.
header
id
titel
datum
dtabel
details
id
tekst
header_id
details2
id
tekst
header_id
de tabellen details en details2 zijn exact hetzelfde, het verschil is dat de data in details permanent is en de data in details2 frequent verwijderd wordt.
Het veld dtabel in header geeft aan welke tabel er gebruikt moet worden, bij 1 => details, 0 => details2, nu kwam ik na wat speurwerk erachter dat dit mogelijk moet zijn met een CASE statement, nu heb ik de volgende query:
Dit werkt dus niet helemaal zoals het zou moeten werken, ik krijg alles terug vanuit de details(2), logisch, maar hoe kan ik hierop een WHERE statement toepassen, dus wanneer bijvoorbeeld "dtabel" 1 is, kijken of er details zijn in de details tabel met het header id van het id van het huidige header id.
Ook selecteer ik maar 1 veld in de CASE statement, ik mil dus alle velden hebben (originele tabel heeft meer velden).
Ik wil dus afhankelijk van een waarde van een veld informatie uit 1 van de 2 tabellen hebben, de datatypes/veldnamen zijn hetzelfde alleen de tabelnaam is verschillend.
Heb al veel opties geprobeerd maar heb nooit de juiste data gekregen, volgens mij is dit niet al te ingewikkeld maar hoe doe ik dit wel goed?
Bij voorbaat dank,
Ik zit met een probleem, ik heb drie (test) tabellen aangemaakt, header, details en details2.
header
id
titel
datum
dtabel
details
id
tekst
header_id
details2
id
tekst
header_id
de tabellen details en details2 zijn exact hetzelfde, het verschil is dat de data in details permanent is en de data in details2 frequent verwijderd wordt.
Het veld dtabel in header geeft aan welke tabel er gebruikt moet worden, bij 1 => details, 0 => details2, nu kwam ik na wat speurwerk erachter dat dit mogelijk moet zijn met een CASE statement, nu heb ik de volgende query:
SQL:
1
2
3
4
5
| SELECT header.id, header.titel, header.datum, CASE WHEN dtabel = 1 THEN details.tekst ELSE details2.tekst END AS DetailsTekst, CASE WHEN dtabel = 1 THEN details.id ELSE details2.id END AS DetailsHeaderID FROM header AS header CROSS JOIN details AS details CROSS JOIN details2 AS details2[b][/b] |
Dit werkt dus niet helemaal zoals het zou moeten werken, ik krijg alles terug vanuit de details(2), logisch, maar hoe kan ik hierop een WHERE statement toepassen, dus wanneer bijvoorbeeld "dtabel" 1 is, kijken of er details zijn in de details tabel met het header id van het id van het huidige header id.
Ook selecteer ik maar 1 veld in de CASE statement, ik mil dus alle velden hebben (originele tabel heeft meer velden).
Ik wil dus afhankelijk van een waarde van een veld informatie uit 1 van de 2 tabellen hebben, de datatypes/veldnamen zijn hetzelfde alleen de tabelnaam is verschillend.
Heb al veel opties geprobeerd maar heb nooit de juiste data gekregen, volgens mij is dit niet al te ingewikkeld maar hoe doe ik dit wel goed?
Bij voorbaat dank,
[ Voor 5% gewijzigd door Keess op 23-05-2008 10:37 ]