Avatar billede kthiesen Novice
25. april 2010 - 11:13 Der er 7 kommentarer og
1 løsning

SELECT UNTIL

Hej

mysql 5.1 og php 5.x

Jeg sidder og laver en opgave, hvor jeg skal hente data i en mysql db.
Opgaven går ud på at gå tilbage fra en given dato hvor en kondition er opfyldt til den næste dato hvor konditionen er opfyldt.

Jeg tænker noget i stil med
SELECT * FROM tabel
WHERE kondition = '0'
UNTIL kondition > '0'

jeg sætter konditionen til 1, hvis den er opfyldt og 0 hvis ikke.
Jeg skal lægge nogle tider sammen mellem de to datoer, der skal findes og det skal så præsenteres som et samlet resultat.

Det handler om en pumpe, der skiftes når den går i stykker. Jeg skal så lave en udregning af hvor mange timer den enkelte pumpe er i drift.

Er der nogen idéer?

Vh Kristen
Avatar billede limemedia Nybegynder
25. april 2010 - 13:10 #1
Hvis du kun har vaerdier 0 og 1 i kondition vil

SELECT *
FROM tabel
WHERE kondition = 0

virke, men hvis du vil have mellem to vaerdier vil

SELECT *
FROM tabel
WHERE kondition > 0 && kondition < 10

vaelge vaerdier mellem 1 og 9
Avatar billede arne_v Ekspert
25. april 2010 - 15:36 #2
Jeg er langtfra sikker paa at denne opgave loeses bedst i SQL, men hvis den skal saa tror jeg at du leder efter noget a la:

SELECT t1.tid,t2.tid
FROM dintabel t1, dintabel t2
WHERE t1.condition=x AND t2.condition=x AND t2.id=t1.id AND t2.tid = (SELECT MIN(t3.tid) FROM dintabel t3 WHERE t3.id=t1.id AND t3.tid > t1.tid AND t3.condition=x)
Avatar billede kthiesen Novice
25. april 2010 - 23:23 #3
Hej

Tak for svar og kommentar.

Jeg er nok nødt til at forklare mig lidt bedre.

Som nævnt i mit spørgsmål handler det om at holde øje med driftstid mellem to pumpeskift.

Da der kan optræde mere end et skift i databasen er jeg kun interesseret i den seneste driftstid mellem de seneste to skift.

Derfor vil jeg gerne have en løsning, hvor jeg søger i db efter rækker med værdien 0 for skift (altså ingen skift) fra nu og tilbage i tiden til det seneste pumpeskift, repræsenteret ved værdien 1.

Jeg er ikke helt sikker på om en sql forespørgsel stopper når det første 1 for pumpeskift.

Jeg laver gerne en while do i php for at lave løsningen - så det er ikke begrænset til sql.
Avatar billede arne_v Ekspert
26. april 2010 - 02:17 #4
Jeg mener stadig at den ide jeg outlinede ovenfor er relevant.
Avatar billede kthiesen Novice
26. april 2010 - 12:48 #5
Hej Arne

Som jeg læser #2 lægger du op til at jeg skal arbejde med 3 tabeller. Nu har jeg kun én tabel med relevante data.
Hvis jeg forstår din idé, så tager den ikke højde for at tabellen jo indeholder flere rækker med konditionen 0 og 1 og det er kun de nyeste 0'er jeg er interesseret i når jeg skal lave beregningen.
Avatar billede arne_v Ekspert
26. april 2010 - 15:09 #6
Nej. Mit forslag opererer kun med 1 tabel. Men der er 3 aliaser til samme tabel.
Avatar billede kthiesen Novice
27. april 2010 - 07:22 #7
#6 jeg kan stadig ikke se, den stopper når den når det første positive resultat, kondition=1
Hvis det ikke er tilfældet må du gerne lægge lidt forklaring ind i dit svar.
Avatar billede kthiesen Novice
04. oktober 2010 - 20:39 #8
Har selv løst gåden
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester