Archief - SQL (postgresql) vraagje

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

LilWeezy

Legacy Member
Dag iedereen ,

Ik ben nog niet zo lang bezig met programmeren in SQL maar ik heb een oefening waar je één where condition mag hebben maar niet gebruik mag maken van AND of OR.

De oefening is dus om mensen die in de jaren 70 geboren zijn te tonen.

En ik heb dus geen idee hoe ik dit zou kunnen doen.

Alvast bedankt!

Grtjs

LilWeezy

Legacy Member
Ok en hoe moet je dit juist toepassen want volgende code werkt nog altijd niet volledig.
:
SELECT spelersnr, naam, EXTRACT(YEAR from geb_datum) as jaar
FROM spelers
WHERE EXTRACT (year from geb_datum) 1970 between 1979

Toch al bedankt !

*Fmc*

Legacy Member
SELECT *
FROM Stu_Table
WHERE Stu_Dob BETWEEN '1984-01-01 00:00:00' AND '1986-1-1 00:00:00';

Werkt ook met andere datetime formats natuurlijk :)

KiPpIe

Legacy Member
Maar dan heeft hij wel het probleem dat er een AND in zit, hoewel deze natuurlijk niet dezelfde betekenis heeft als de conditional AND

Andere mogelijkheid zou zijn om uit uw datetime de years te halen, dit te casten naar een (var)char, en dan te zien of het begint met 197% ?
Anders ook de jaren nemen, en de modulus 1970 nemen en zien of het kleiner is dan 10?

Zijn maar enkele dingen die mij te binnen schieten, maar zijn beide redelijk lelijk om te doen :p

KiPpIe

Legacy Member
Ah nee, want als ge dan in 1968 geboren zijt, en daar 1970 van aftrekt, komt ge op -2 < 10, dus is in de jaren 70 geboren. En ge kunt niet controleren of het groter is dan 0, want dan hebt ge een AND nodig.
Denk ik, tenzij mijn hersenen mij weer in de steek laten.

Gurdt

Legacy Member
Code:
SELECT *
FROM personen
WHERE jaar >= 1970
HAVING jaar < 1980

Cycloon

Legacy Member
abs(ceil(jaar-1975+0.1))<5 zoiets... De ceil en de som is om 1980 uit te schakelen.

Edit: werkt ook niet perfect want dan krijg je ook 1969...

Gurdt

Legacy Member
Cycloon zei:
abs(ceil(jaar-1975+0.1))<5 zoiets... De ceil en de som is om 1980 uit te schakelen.

Edit: werkt ook niet perfect want dan krijg je ook 1969...

Wat van: CEIL(ABS(jaar - 1975 + 0.5)) < 5 ?

Emerxill

Legacy Member
Gurdt zei:
Wat van: CEIL(ABS(jaar - 1975 + 0.5)) < 5 ?
Da's voor als TS een Master-opleiding volgt :D

De graduaat-versie is:
IN (1970, 1971, 1972, 1973, 1975, 1976, 1977, 1978, 1979) :unsure:

Cycloon

Legacy Member
Abs(jaar-1974.5)<=4.5 is volgens mij volledig correct :)

Hierboven: so true :D

LilWeezy

Legacy Member
select spelersnr, naam, geb_datum
from spelers
where extract (year from geb_datum) between 1960 and 1969

Dit was de juiste oplossing! Thanks iedereen ;)!

Gurdt

Legacy Member
LilWeezy zei:
select spelersnr, naam, geb_datum
from spelers
where extract (year from geb_datum) between 1960 and 1969

Dit was de juiste oplossing! Thanks iedereen ;)!

Da zijn wel de jaren 60 he :( en wij ma zoeken naar die uit de jaren 70.

LilWeezy

Legacy Member
Hahaha sorry idd :p ma bon ik zat ook naar iets te zoeken ZONDER and..

Maar ja leerkrachten en duidelijke uitleg...

Emerxill

Legacy Member
De gegeven antwoorden eens lezen zou ook gene kwaad kunnen.
Mja, die studenten van tegenwoordig ... :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan