Hoe kan ik in sql een voorwaarde meegeven zoals bij een geslacht dat je alleen m of v mag invoeren. Graag zonder php oplossingen.
Alleen m of v? Kan je dan ook oplossen door middel van een bit (of true/false veld of hoe je het dan ook wilt noemen)
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Maar als je een bit gebruikt doe je dat natuurlijk met een int en daar kan je ook andere getallen invoeren. Mijn vraag was dus eigenlijk kan je het ingevoerde controleren in sql?gorgi_19 schreef op 19 november 2002 @ 11:11:
Alleen m of v? Kan je dan ook oplossen door middel van een bit (of true/false veld of hoe je het dan ook wilt noemen)
Kleine tip: de WHERE clause in het SELECT statement....
Trouwens.... dit is echt echt echt heel heel heel heel heel elementair hoor...
Als je dit al niet weet, hoe kun je dan beginnen met proggen...
Begin eerst maar eens een SQL tutorial door te nemen.
Trouwens.... dit is echt echt echt heel heel heel heel heel elementair hoor...
Als je dit al niet weet, hoe kun je dan beginnen met proggen...
Begin eerst maar eens een SQL tutorial door te nemen.
Fuck me if I'm wrong, but isn't your name Gretchen?
0 of 1 is in principe alles......gomaster schreef op 19 november 2002 @ 11:15:
[...]
Maar als je een bit gebruikt doe je dat natuurlijk met een int en daar kan je ook andere getallen invoeren. Mijn vraag was dus eigenlijk kan je het ingevoerde controleren in sql?
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Verwijderd
Je kan gebruik maken van een Stored Procedure om de data "te inserten" in je DB. In de stored procedure kan je je invoer controleren op bepaalde voorwaarden. Als deze niet juist zijn, geef je een bv. error code terug.
Je kan natuurlijk ook de invoer in je UI controleren.
Je kan natuurlijk ook de invoer in je UI controleren.
We hebben het hier over CREATE. Dus:Theguide schreef op 19 November 2002 @ 11:19:
Kleine tip: de WHERE clause in het SELECT statement....
Trouwens.... dit is echt echt echt heel heel heel heel heel elementair hoor...
Als je dit al niet weet, hoe kun je dan beginnen met proggen...
Begin eerst maar eens een SQL tutorial door te nemen.
code:
1
2
3
4
| CREATE TABLE test
{
geslacht CHAR(1) NOT NULL
} |
en achter char dus een voorwaarde m of v.
Verwijderd
Volgens mij haal je 2 dingen door elkaar, SQL gebruik je namelijk om 'opdrachten' te geven aan een database. Voor het afvangen van een invoer zou je toch echt een programmeertaal moeten gebruiken volgens mij (PHP, ASP enz).
En als je in een DB een true/false veld op neemt kan die alleen maar 1 of 0 zijn, dus als de gebruiker iets andere in zou vullen (wat me sterk lijkt als je hem die mogelijkheid niet geeft) dan accepteerd de DB dat gewoon niet.
En als je in een DB een true/false veld op neemt kan die alleen maar 1 of 0 zijn, dus als de gebruiker iets andere in zou vullen (wat me sterk lijkt als je hem die mogelijkheid niet geeft) dan accepteerd de DB dat gewoon niet.
Verwijderd schreef op 19 november 2002 @ 11:21:
Hij wil invoer controleren, niet uitvoer. Maar dat is niet echt mogelijk..
Laten daar nou de triggers voor bedacht zijn?
Of natuurlijk de contraints...
Maar als je mysql gebruikt kan je iig al geen triggers toepassen en moet je het in je frontend controleren.
Daar zijn triggers en constraints voor volgens mij, als je het in je database wil doen.Verwijderd schreef op 19 november 2002 @ 11:22:
Voor het afvangen van een invoer zou je toch echt een programmeertaal moeten gebruiken volgens mij (PHP, ASP enz).
Ik weet dat MySQL het datatype ENUM heeft waarmee je dit kunt doen
geslacht ENUM('M','V') NOT NULL -> moet dus een M of een V in staan
geslacht ENUM('M','V') NOT NULL -> moet dus een M of een V in staan
Ik gebruik de echte sql taal. Geen dialecten (het is voor school).ACM schreef op 19 november 2002 @ 11:22:
[...]
Laten daar nou de triggers voor bedacht zijn?
Maar als je mysql gebruikt kan je iig al geen triggers toepassen en moet je het in je frontend controleren.
gomaster schreef op 19 november 2002 @ 11:23:
Ik gebruik de echte sql taal. Geen dialecten (het is voor school).
Dat zal wel, maar zolang je niet vermeld met welke database je werkt kan ik moeilijk aangeven of je triggers kan toepassen of niet.
Maar als je bijv Oracle gebruikt, dan kan je prima een constraint op je tabel leggen die alleen maar de invoer van v of m toelaat.
En als je het niet met een constraint wil/mag doen kan je het nog met een trigger op de insert en update doen (die dus bijv een foutmelding geeft als het geen m/v is).
Verwijderd
je kunt dit in de meeste databaseomgevingen door middel van een constraint doen. Deze kun je de waardes in het veld laten controleren.
Zelf zou ik kiezen voor een bit zoals je al is aangeraden. Het datatype bit staat alleen Null, 0 of 1 als waardes toe.
Keuze is aan jou waar 1 of 0 voor staat. NULL staat waarschijnlijk voor Onbekend.
Uiteraard kun je het ook aan de front-end oplossen door alleen die keuzes M/V aan te bieden in de vorm van een combobox. Zou hier niet voor kiezen want je dataintegriteit moet je eigenlijk in de db zelf waarborgen en niet in de front-end.
Zelf zou ik kiezen voor een bit zoals je al is aangeraden. Het datatype bit staat alleen Null, 0 of 1 als waardes toe.
Keuze is aan jou waar 1 of 0 voor staat. NULL staat waarschijnlijk voor Onbekend.
Uiteraard kun je het ook aan de front-end oplossen door alleen die keuzes M/V aan te bieden in de vorm van een combobox. Zou hier niet voor kiezen want je dataintegriteit moet je eigenlijk in de db zelf waarborgen en niet in de front-end.
Verwijderd
Integriteitswaarborging van je data doe je op de db zelf. Het is klinklare onzin dat je een db alleen gebruikt voor "opdrachten". Dit doen alleen ontwikkelaars die de ballen geen verstand hebben van databases. Gebruik dan alsjeblieft tekstfiles!Verwijderd schreef op 19 November 2002 @ 11:22:
Volgens mij haal je 2 dingen door elkaar, SQL gebruik je namelijk om 'opdrachten' te geven aan een database. Voor het afvangen van een invoer zou je toch echt een programmeertaal moeten gebruiken volgens mij (PHP, ASP enz).
En als je in een DB een true/false veld op neemt kan die alleen maar 1 of 0 zijn, dus als de gebruiker iets andere in zou vullen (wat me sterk lijkt als je hem die mogelijkheid niet geeft) dan accepteerd de DB dat gewoon niet.
Verwijderd
hmm ... ff nagekeken in mijn SQL boek, daar staat idd iets in over constraint. Dit is een manier om een check uit te voeren op een invoer. Miscihien dat je daar ff op moet googlen.ACM schreef op 19 November 2002 @ 11:22:
[...]
Daar zijn triggers en constraints voor volgens mij, als je het in je database wil doen.
Het ging erover dat je SQL alleen maar gebruikt voor opdrachten. Of wou je zeggen dat SQL een DB is?Verwijderd schreef op 19 November 2002 @ 11:28:
Integriteitswaarborging van je data doe je op de db zelf. Het is klinklare onzin dat je een db alleen gebruikt voor "opdrachten". Dit doen alleen ontwikkelaars die de ballen geen verstand hebben van databases. Gebruik dan alsjeblieft tekstfiles!
Maarre, als je indredaad en volwassen database en niet-gedownsizede versie van SQL gebruikt is het antwoord met constraints wel gegeven denk ik
bedankt allemaal. Ik ga de mysql enum gebruiken (voor het geval dat jullie wat intereseerd
).
Verwijderd
Ik zie nog nergens staan welke database er gebruikt wordt.
Als je op zoek bent naar goed advies dan zal je dat toch moeten vermelden.
Als je op zoek bent naar goed advies dan zal je dat toch moeten vermelden.
SQL is zowel een Data Definition Language als de query-languageDido schreef op 19 november 2002 @ 11:39:
Het ging erover dat je SQL alleen maar gebruikt voor opdrachten. Of wou je zeggen dat SQL een DB is?
Dus in SQL definieer je hoe je tabel eruit ziet en als je dat als een opdracht ziet... sja das dan een definitie puntje
Ah, mysql, kon je dat niet eerder zeggen?gomaster schreef op 19 november 2002 @ 11:40:
bedankt allemaal. Ik ga de mysql enum gebruiken (voor het geval dat jullie wat intereseerd).
Maar DIT is dan niet waar, mysql ondersteund een subset van de 'echte' SQL taal die nog eens deels gewijzigd is ook.gomaster schreef op 19 november 2002 @ 11:23:
Ik gebruik de echte sql taal. Geen dialecten (het is voor school).
Jij gebruikt dus niet de echte sql taal
Verwijderd
met een stukje pl/sql kom je weer een stukje sneller tot het gewenste resultaat.. maar anders kun je ook: accept a_invoer char prompt 'geef alleen m of v op'; gebruiken (Oracle). Niet zo netjes, controleert niet, maar is wel duidelijk 
okee.. mysql dus... lamaar..
okee.. mysql dus... lamaar..
Verwijderd schreef op 19 November 2002 @ 11:45:
met een stukje pl/sql kom je weer een stukje sneller tot het gewenste resultaat.. maar anders kun je ook: accept a_invoer char prompt 'geef alleen m of v op'; gebruiken (Oracle). Niet zo netjes, controleert niet, maar is wel duidelijk
okee.. mysql dus... lamaar..
Werkt:
code:
1
2
3
4
| create table blaat
(
geslacht char(1) check (geslacht IN ('m', 'v'))
) |
Niet in oracle? (of iets vergelijkbaars, kweet niet of dit 100% sql is, of een postgres-eigen opdracht)
Verwijderd
ACM: je hebt inderdaad een constraint check_condition in de create clause.. kon ook niet anders natuurlijk
Je moet dus gewoon een domain op dat veld definieren. (Die oplossing werd hier al verschillende keren aangehaald, maar dit is de goede benaming). Hierdoor zorg je er dus voor dat het DBMS enkel de gespecifieerde waarden voor dat veld toelaat. (In dit geval dus M en V.
https://fgheysels.github.io/
'tis een kwestie van definitie, idd.ACM schreef op 19 November 2002 @ 11:43:
SQL is zowel een Data Definition Language als de query-language
Dus in SQL definieer je hoe je tabel eruit ziet en als je dat als een opdracht ziet... sja das dan een definitie puntje
Maar op het moment dat ik door middel van SQL aan DB2 vertel wat voor tabel ik wil dat ie definieert, zie ik dat toch als een opdracht...
Maar goed, het blijkt om MySQL te gaan.
Pagina: 1