terugkijken op een datum

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Task b

task b

11/11/2010 11:08:32
Quote Anchor link
Ik ben op dit moment bezig met het opzetten van een query die waarde uit gijzermetingen haalt. In deze tabel staat per uur hoe hoog een gijzer zijn water de lucht in schiet.

Wat ik wil is dit van verschillende data zien en heb deze query opgezet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
SELECT gr1.date, (gr1.hoogte + gr2.hoogte) as hoogte
FROM (SELECT date, (hoogte * 3) AS hoogte
FROM metingen
GROUP BY date
) AS gr1
JOIN (
SELECT date, (hoogte * 2) AS hoogte
FROM metingen WHERE date = (gr1.date - INTERVAL 1 DAY)
GROUP BY date
) AS gr2 ON gr2.date = ( gr1.date - INTERVAL 1
DAY )
WHERE gr1.date
BETWEEN 2009-01-01
AND 2010-01-01
?>


Volgens mij zou hij op deze manier moeten werken maar als ik hem uitvoer krijg ik deze melding:
#1054 - Unknown column 'gr1.datum' in 'where clause'


De query werkt als ik de WHERE conditie weghaal dit gedeelte:
WHERE date = (gr1.date - INTERVAL 1 DAY)
Maar als ik dat weghaal duurt de query erg lang om uit te voeren omdat hij de hele table joined. En misschien pas ik de query later aan zodat hij terug gaat kijken op 7 dagen maar ja dan duurt de query helemaal 3 jaar om uit te voeren.

Ik zit hier echt vast mee dus kan iemand mij hiermee helpen?
 
PHP hulp

PHP hulp

27/04/2024 02:29:50
 
Obelix Idefix

Obelix Idefix

11/11/2010 11:58:32
Quote Anchor link
Je foutmelding geeft aan wat de fout is.
Hoewel ik het nergens in je code zie, heb je ergens gr1.datum in je code staan. Dat klopt niet.
 
Task b

task b

11/11/2010 12:03:23
Quote Anchor link
Sorry dat was mijn domme fout had de verkeerde foutmelding gekopieerd. Maar de foutmelding die ik krijg is dezelfde
#1054 - Unknown column 'gr1.date' in 'where clause'
 
Chris -

Chris -

11/11/2010 12:05:24
Quote Anchor link
Dat komt omdat je "date" als kolom naam heb gebruikt. Date is een voorbehouden functie in MySQL.

Je kan twee dingen doen, of je kolom naam aanpassen (naar bijvoorbeeld datum) of in deze query backticks (`) gebruiken om date. Dat laatste is niet aan te raden, omdat je database opzet verkeerd is. Maar als het eerste niet kan, is dat laatste je redding. :-)

Toevoeging op 11/11/2010 12:06:03:

Toevoeging: Wordt dus `gr1.date` e.d.
 
Task b

task b

11/11/2010 13:21:44
Quote Anchor link
Chris Horeweg op 11/11/2010 12:05:24:
Dat komt omdat je "date" als kolom naam heb gebruikt. Date is een voorbehouden functie in MySQL.

Je kan twee dingen doen, of je kolom naam aanpassen (naar bijvoorbeeld datum) of in deze query backticks (`) gebruiken om date. Dat laatste is niet aan te raden, omdat je database opzet verkeerd is. Maar als het eerste niet kan, is dat laatste je redding. :-)

Toevoeging op 11/11/2010 12:06:03:

Toevoeging: Wordt dus `gr1.date` e.d.


Ah das een goeie ik zal als ik terug bij me computer ben (met de DB erop) even de kolomnaam veranderen, dat zou niet uit moeten maken.


Ok heb de kolomnaam date veranderd naar datum en de query ziet er dan alsvolgt uit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
SELECT gr1.datum, (gr1.hoogte + gr2.hoogte) as hoogte
FROM (SELECT datum, (hoogte * 3) AS hoogte
FROM metingen
GROUP BY datum
) AS gr1
JOIN (
SELECT datum, (hoogte * 2) AS hoogte
FROM metingen WHERE datum = (gr1.datum - INTERVAL 1 DAY)
GROUP BY datum
) AS gr2 ON gr2.datum = ( gr1.datum - INTERVAL 1
DAY )
WHERE gr1.datum
BETWEEN 2009-01-01
AND 2010-01-01
?>


Ik krijg alleen nog steeds exact dezelfde foutmelding:
#1054 - Unknown column 'gr1.datum' in 'where clause'
Gewijzigd op 11/11/2010 14:35:12 door task b
 



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.