Where probleem in sql statement

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Karel hertens

karel hertens

08/12/2010 15:16:25
Quote Anchor link
Ik heb een colom waar ik in moet zoeken,

de gegevens zien er volgende uit:

colum_name
2009week3
2009week4
2009week5
2009week6
tot...
2010week1
2010week2
2010week3

Hoe kan ik nu alles selecteren van 2009week4 tot 2010week2 ?? Is er een hoger lager dan functie die ik kan gebruiken samen met een LIKE? of weet iemand een betere oplossing?
vriendelijk bedankt
 
PHP hulp

PHP hulp

25/12/2024 20:32:16
 
Kris Peeters

Kris Peeters

08/12/2010 15:22:43
Quote Anchor link
Is het echt nodig dat je de colum_name zo opslaat?
waarom verdeel je dat niet op een veld jaar en een veld week.
Integers rekenen makkelijker dan gecodeerde strings
 
Karel hertens

karel hertens

08/12/2010 15:30:52
Quote Anchor link
Het is een bestaande database, normaal zou ik meerdere colums gebruiken.
 

08/12/2010 15:34:12
Quote Anchor link
Je database model klopt niet. Je hoort data op te slaan. Geen strings.
 
TJVB tvb

TJVB tvb

08/12/2010 15:38:37
Quote Anchor link
Normaal kun je een datum gebruiken :p

Ik denk dat je dan op zoiets komt (niet getest)
SELECT colum_name,
LEFT(column_name,4) AS yearpart,
SUBSTRING(column_name,8) AS weekpart
FROM table_name
WHERE
( yearpart=2009 AND weekpart >3 ) OR
( yearpart=2010 AND weekpart <2 )
 
Karel hertens

karel hertens

08/12/2010 15:49:57
Quote Anchor link
Het is voor een bestaande database, ik doe het wel in php.
 
TJVB tvb

TJVB tvb

08/12/2010 15:50:48
Quote Anchor link
Waarom in PHP, werkt die query niet of iets wat er op lijkt?
Het in PHP uitvoeren is wel een slechte keuze. Dan haal je eerst alle data op terwijl dat niet nodig is.
 
Kris Peeters

Kris Peeters

08/12/2010 16:20:14
Quote Anchor link
Het is uiteraard mogelijk om alle gegevens te selecteren en dan php het query werk laten doen, maar je begrijpt dat dit niet echt de database way is.

Het is ook mogelijk om met wat logica de sql string zo te bouwen dat de juiste WHERE krijgt, in een vorm zoals

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT
  ...
FROM table_name
WHERE
 colum_name = '2009week3' OR colum_name = '2009week4' OR colum_name = '2009week5' ...


Je laat dus op voorhan php alle mogelijke jaar/weken berekenen.
Ook hier blijft de opmerking dat dit misschien niet de conventionele manier is om met databases om te gaan.
Gewijzigd op 08/12/2010 16:24:54 door Kris Peeters
 
Karel hertens

karel hertens

08/12/2010 22:19:02
Quote Anchor link
Het is inmiddels opgelost, na wat nadenken en een order BY kwam ik op het idee:

Query: SELECT * FROM productstats WHERE A <> '' AND R >= '2009week1' AND R <= '2011week34' order by R ;

Ik dacht als mysql de orber by kan dan snapt het hoger/lager waarschijn ook wel en voila.
 
Kris Peeters

Kris Peeters

09/12/2010 11:25:14
Quote Anchor link
Karel hertens op 08/12/2010 22:19:02:
Ik dacht als mysql de orber by kan dan snapt het hoger/lager waarschijn ook wel en voila.


Weet dan wel dat bv. 2009week5 verder staat dan 2009week15.
Je redenering zou kloppen mochten je weken telkens in twee karakters worden geschreven, met leading zero.
 
Karel hertens

karel hertens

09/12/2010 14:34:36
Quote Anchor link
Dat was dus mijn gelukje :) en anders trek ik daar een keer een script overheen om aan te passen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.