CASE in SQL?

Bespreek het databaseprogramma

CASE in SQL?

Berichtdoor AliceWonders » di mei 03, 2016 9:52 pm

Hallo,

Ik wil graag een CASE - WHEN gebruiken in een SQLquery, maar mijn OO herkent het commando niet.. ?
Is het helemaal niet mogelijk, of moet ik er iets voor installeren?
Ik wil een waarde opslaan in een tabel naargelang een ander veld de waarde 1 of 2 terug geeft.
Open Office 4.1.2 op Windows 7
AliceWonders
 
Berichten: 14
Geregistreerd: za apr 30, 2016 9:57 pm

Re: CASE in SQL?

Berichtdoor RPG » di mei 03, 2016 10:04 pm

Hallo

Je zult dan waarschijnlijk een query in native mode moeten gebruiken. Ik heb op dit moment geen idee wat je bedoelt. Het beste is als je de query hier plaatst als kan een beetje leesbaar. Het is waarschijnlijk dat eremmel het beter weet dan ik. Het is beter wat meer details te geven in de vraag.

Romke
LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 4000
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: CASE in SQL?

Berichtdoor AliceWonders » di mei 03, 2016 10:27 pm

SELECT
"KindInvoer"."KindAchternaam",
"KindInvoer"."KindVoornaam",
"KindInvoer"."Geboortedatum",
"KlantenInvoer"."KlantID",
"KlantenInvoer"."Ouder"
CASEWHEN (klanteninvoer.ouder = 1, KindInvoer.Kindouder = KindInvoer.Vader, CASEWHEN(KlantenInvoer.Ouder=2, KindInvoer.Kindouder = Kindinvoer.Moeder))
FROM "KindInvoer", "KlantenInvoer"

Ik heb het zo geprobeerd, alsook met een CASE - WHEN - THEN - END


Op het invulformulier van "KlantenInvoer" staan 2 radiobuttons (moeder, vader), de waarde hiervan (1 voor vader en 2 voor moeder) wordt opgeslagen in KlantenInvoer.Ouder

Bij KindInvoer kunnen de vader en moeder geselecteerd worden in een dropdown. Deze waarde is gelinkt aan de KlantenInvoer.KlantID (primary key van die tabel)


Ik wil in het klantenoverzicht, in een subform, de juiste kinderen bij de juiste ouder tonen.
(Bij onze klanten is het vrij goed mogelijk dat moeder bvb 4 kinderen van 3 verschillende vaders heeft.. de 4 kinderen moeten dan bij moeder getoond worden, maar niet bij de huidige partner, maar wel bij de juiste vader)

Ik wil aan de hand van een IF (of CASE..) de KlantID van de vader of moeder opslaan in het veld KindInvoer.Kindouder, zodat ik KindInvoer.Kindouder als Slave kan koppelen.


De foutmelding:
1: Unexpected token CASE, requires FROM in statement [SELECT
"KindInvoer"."KindAchternaam",
"KindInvoer"."KindVoornaam",
"KindInvoer"."Geboortedatum",
"KlantenInvoer"."KlantID",
"KlantenInvoer"."Ouder"
CASE]

(zelfde bij CASEWHEN)
Open Office 4.1.2 op Windows 7
AliceWonders
 
Berichten: 14
Geregistreerd: za apr 30, 2016 9:57 pm

Re: CASE in SQL?

Berichtdoor eremmel » di mei 03, 2016 10:36 pm

AliceWonders schreef:Hallo,

Ik wil graag een CASE - WHEN gebruiken in een SQLquery, maar mijn OO herkent het commando niet.. ?
Is het helemaal niet mogelijk, of moet ik er iets voor installeren?
Ik wil een waarde opslaan in een tabel naargelang een ander veld de waarde 1 of 2 terug geeft.


Het is niet gebruikelijk om 'afgeleide waarden' op te slaan als je die later nog kunt reconstrueren met een query. B.v. de totaal prijs van een order regel. Als je de gegevens opvraagt kun je die meestal wel door de query laten berekenen. Geldt dit ook voor dit probleem?

Zoals Romke al aangeeft is een voorbeeld handig omdat er te veel onduidelijk is in de vraagstelling voor ons.

Als je nog de interne database gebruikt HSQLDB 1.8 zoek dan naar "HSQLDB SQL syntax 1.8" dan vind je zo de pagina waar de syntax beschreven wordt.
--
Erik
Het is Microsoft marketing die laat geloven dat computers geschikt zijn voor niet technici
eremmel
 
Berichten: 627
Geregistreerd: di sep 01, 2009 10:11 am
Woonplaats: Barneveld, Nederland

Re: CASE in SQL?

Berichtdoor AliceWonders » di mei 03, 2016 10:53 pm

Zie mijn uitleg na de post van Romke

Is dat duidelijk uitgelegd?
Open Office 4.1.2 op Windows 7
AliceWonders
 
Berichten: 14
Geregistreerd: za apr 30, 2016 9:57 pm

Re: CASE in SQL?

Berichtdoor RPG » wo mei 04, 2016 8:31 am

Hallo
AliceWonders schreef:Op het invulformulier van "KlantenInvoer" staan 2 radiobuttons (moeder, vader), de waarde hiervan (1 voor vader en 2 voor moeder) wordt opgeslagen in KlantenInvoer.Ouder

Ik zou aanraden om je wat meer te richten op de radio button. Zoals ik het nu begrijp moet het daarin en daarmee opgelost. Misschien is het het beste om het te maken met de wizard voor een groepsbox.

Romke
LibreOffice 6.2.5.2 op openSUSE Leap 15.1
RPG
 
Berichten: 4000
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: CASE in SQL?

Berichtdoor eremmel » wo mei 04, 2016 9:38 am

AliceWonders schreef:SELECT
"KindInvoer"."KindAchternaam",
"KindInvoer"."KindVoornaam",
"KindInvoer"."Geboortedatum",
"KlantenInvoer"."KlantID",
"KlantenInvoer"."Ouder"
CASEWHEN (klanteninvoer.ouder = 1, KindInvoer.Kindouder = KindInvoer.Vader, CASEWHEN(KlantenInvoer.Ouder=2, KindInvoer.Kindouder = Kindinvoer.Moeder))
FROM "KindInvoer", "KlantenInvoer"


Problemen,
1. Alle velden in SELECT-clause moet je scheiden door een komma
2. CASEWHEN true/false deel is een expressie en geen toekenning.
3. Als je zeker weet dat het veld klanteninvoer.ouder altijd gevuld is (definieer in database als NOT NULL) en de waarde 1 of 2 bevat, dan kun je met een enkele CASEWHEN werken
4. De relatie tussen "KindInvoer" en "KlantenInvoer" is niet gegeven dit levert je een [url=https://nl.wikipedia.org/wiki/Cartesisch_product]cartesisch product]/url] op.
Dit zou kunnen werken (behalve punt 4):
Code: Selecteer alles   UitklappenInklappen
SELECT
"KindInvoer"."KindAchternaam",
"KindInvoer"."KindVoornaam",
"KindInvoer"."Geboortedatum",
"KlantenInvoer"."KlantID",
"KlantenInvoer"."Ouder" ,
CASEWHEN (klanteninvoer.ouder = 1, KindInvoer.Vader,  Kindinvoer.Moeder) as "Kindouder"
FROM "KindInvoer", "KlantenInvoer"
Het is Microsoft marketing die laat geloven dat computers geschikt zijn voor niet technici
eremmel
 
Berichten: 627
Geregistreerd: di sep 01, 2009 10:11 am
Woonplaats: Barneveld, Nederland

Re: CASE in SQL?

Berichtdoor AliceWonders » wo mei 04, 2016 9:09 pm

Ok, de CASEWHEN gaat er nu wel door. Het klopt nog niet, maar wordt wel herkend.
Dus daar kan ik verder mee proberen... ga ook aan de gang met de radiobutton en groepsbox.
Thanks!
Open Office 4.1.2 op Windows 7
AliceWonders
 
Berichten: 14
Geregistreerd: za apr 30, 2016 9:57 pm


Keer terug naar Base

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast