[ specs ] [ Tweaker gallery ]
das toch niet zo moeilijk?
je hebt het probleem volgens mij al helemaal door
dus je moeter alleen nog maar een query van maken
je hebt het probleem volgens mij al helemaal door
dus je moeter alleen nog maar een query van maken
Doet iets met Cloud (MS/IBM)
Ja, en daar gaat het nou net mis... HOE maak ik die query?
[ specs ] [ Tweaker gallery ]
Gaat niet zo, er is geen $datum... Die gegevens staan dus allemaal in de db.Op vrijdag 19 oktober 2001 17:06 schreef Nielsz het volgende:
select * from blaat where datum <$datum ofzo?
De eerste query is misschien nog te verzinnen...
select * from blaat where datum = max(datum)
ofzo? kan dat?
Die tweede, precies het tegenovergestelde dus, weet ik niet.
Edit: goed, dat kan dus niet, die query daarboven. Maar als het niet zo moeilijk is (D2k), leg het me dan eens uit...
[ specs ] [ Tweaker gallery ]
Grmbl... Ik zit van alles te proberen met max en group by dingen, maar het wil niet werken!
Volgens mij is het inderdaad poepsimpel, maar ik kom er niet uit! Pleazzz help!
[ specs ] [ Tweaker gallery ]
Verwijderd
1.
probeer dit eens:
2.
probeer dit eens:
op linux moet unix_timestamp werken, op windows bak weet ik niet!
unix_timestamp geeft de tijd en datum terug in seconden
probeer dit eens:
code:
1
| select * from tabel where unix_timestamp(datum veld)-unix_timestamp(now()) > 0 order by datum veld DESC limit 1 |
2.
probeer dit eens:
code:
1
| select * from tabel where unix_timestamp(datum veld)-unix_timestamp(now()) > 0 order by datum veld DESC |
op linux moet unix_timestamp werken, op windows bak weet ik niet!
unix_timestamp geeft de tijd en datum terug in seconden
Bedankt voor 't antwoord. Ik zat er ERG op te wachten! 
Helaas is het niet wat ik zoek. Ik probeerde eerder al onderstaande uitleg te posten, maar het forum zit enorm te buggen. Bij deze nog een poging.
Ik zal m'n probleem nog eens opnieuw uiteenzetten. Misschien helpt dat.
Ik heb een tabelletje:
nummer, titel, datum, tekst
Nummer is geen id ofzo, maar meer een nummer om de teksten te groeperen (group by!
) So far so good... Maar van zo'n groepje teksten met hetzelfde nummer, wil ik nu de row die de hoogste (laatste = nieuwste) datum heeft. Max? Ik kom er niet uit...
Ook wil ik het tegenovergesteld. Dus je hebt nieuwste tekst en oudere teksten.
Ik heb dus al:
(sommige raporten hebben dus nummer 0, die moeten niet worden meegeteld.) Die query werkt prima, afgezien van het feit dat ik niet het nieuwste raport terugkrijg, maar gewoon 'een' raport... volgens mij compleet willekeurig.
Hoe pas ik die query aan zodat ik de nieuwste krijg? En hoe pas ik 'm aan zodat ik juist de rest krijg (alles, behalve de nieuwste dus)?
Helaas is het niet wat ik zoek. Ik probeerde eerder al onderstaande uitleg te posten, maar het forum zit enorm te buggen. Bij deze nog een poging.
Ik zal m'n probleem nog eens opnieuw uiteenzetten. Misschien helpt dat.
Ik heb een tabelletje:
nummer, titel, datum, tekst
Nummer is geen id ofzo, maar meer een nummer om de teksten te groeperen (group by!
Ook wil ik het tegenovergesteld. Dus je hebt nieuwste tekst en oudere teksten.
Ik heb dus al:
code:
1
| select nummer,titel,datum from raporten where nummer != 0 group by nummer |
(sommige raporten hebben dus nummer 0, die moeten niet worden meegeteld.) Die query werkt prima, afgezien van het feit dat ik niet het nieuwste raport terugkrijg, maar gewoon 'een' raport... volgens mij compleet willekeurig.
Hoe pas ik die query aan zodat ik de nieuwste krijg? En hoe pas ik 'm aan zodat ik juist de rest krijg (alles, behalve de nieuwste dus)?
[ specs ] [ Tweaker gallery ]
ff een voorbeeldje:
klopt dat?
dan denk ik:
code:
1
2
3
4
5
6
7
8
9
10
11
| nummer datum ... ================ 1 100 1 103 1 104 <-- die wil je 2 100 2 102 2 106 <-- die wil je 3 100 3 103 3 107 <-- en deze ook nog |
klopt dat?
dan denk ik:
code:
1
2
| SELECT nummer, titel, datum FROM rapporten WHERE nummer != 0 HAVING datum = MAX(datum) GROUP BY nummer |
Ik krijg zo'n ohja-erlebnis...
Ziet er goed uit, je uitleg klopt inderdaad. Echter, die query levert (om een voor mij onbegrijpbare reden), maar 1 regel terug. Overigens heb ik 'm wel moeten verbouwen tot:
Als je group by en having omdraait dan krijg je een lege result-set terug. En op bovenstaande manier dus maar 1 rij. Hm... Ik krijg nog geen koppijn van dit ding, maar het zal niet meer lang duren.
En hoe zou 't dan moeten met precies het omgekeerde? Dus niet het nieuwste raport, maar juist alle raporten, die een afzonderlijk nummer hebben en niet de nieuwste zijn? 'having datum != max(datum)' ? Hmja... nog effe doormieren. 'k Ben er bijna uit...
Ziet er goed uit, je uitleg klopt inderdaad. Echter, die query levert (om een voor mij onbegrijpbare reden), maar 1 regel terug. Overigens heb ik 'm wel moeten verbouwen tot:
code:
1
| select nummer,datum,titel from raporten where nummer != 0 group by nummer having datum = max(datum) |
Als je group by en having omdraait dan krijg je een lege result-set terug. En op bovenstaande manier dus maar 1 rij. Hm... Ik krijg nog geen koppijn van dit ding, maar het zal niet meer lang duren.
En hoe zou 't dan moeten met precies het omgekeerde? Dus niet het nieuwste raport, maar juist alle raporten, die een afzonderlijk nummer hebben en niet de nieuwste zijn? 'having datum != max(datum)' ? Hmja... nog effe doormieren. 'k Ben er bijna uit...
[ specs ] [ Tweaker gallery ]
Hm... Na een joint kom ik op de volgende alternatieve methode:
Echter... Dat mag niet van mySQL! Group by mag daar blijkbaar niet staan. Klopt het dat dat de mySQL-engine zo'n query van links naar rechts uitvoert? Als ik nl. de group by voor de order by zet, dan krijg ik verkeerde resultaten, alsof er eerst 1 nr. uit de lijst wordt gepikt en dus vervolgens de order by niks meer uithaalt.
Als bovenstaande query zou werken, dan zou ik er uit zijn... Bugger!
code:
1
| select num,date,title from insreports where num != 0 order by num,date group by num |
Echter... Dat mag niet van mySQL! Group by mag daar blijkbaar niet staan. Klopt het dat dat de mySQL-engine zo'n query van links naar rechts uitvoert? Als ik nl. de group by voor de order by zet, dan krijg ik verkeerde resultaten, alsof er eerst 1 nr. uit de lijst wordt gepikt en dus vervolgens de order by niks meer uithaalt.
Als bovenstaande query zou werken, dan zou ik er uit zijn... Bugger!
[ specs ] [ Tweaker gallery ]
nee, dat klopt niet. maar de volgorde van de woorden maakt wel uit, zie:Klopt het dat dat de mySQL-engine zo'n query van links naar rechts uitvoert?
http://www.mysql.com/doc/S/E/SELECT.html
GROUP BY moet dus voor ORDER BY
Dat is jammer, dan werkt die query die ik inmiddels verzonnen had ook niet. Having moet dus overigens ook NA group by.Op vrijdag 19 oktober 2001 22:12 schreef marcusk het volgende:
[..]
nee, dat klopt niet. maar de volgorde van de woorden maakt wel uit, zie:
http://www.mysql.com/doc/S/E/SELECT.html
GROUP BY moet dus voor ORDER BY
Ben ik nou gek of zit mySQL gewoon enorm te buggen?! Dit is toch een redelijk normale query? Zoiets moet toch gewoon simpel te doen zijn?
Ik denk dat ik 't maar opgeef en de hele result-set laat afzoeken door een stukkie php. Dan heb ik het tenminste over 10 minuten af. Ben nu al uuuuuuuuuren aan het klooien met die mySQL-shit.
[ specs ] [ Tweaker gallery ]
Verwijderd
Explore,
Ik heb nog ff zitten proberen hier en het nagemaakt....
en als ik het volgende doe in mysql dan krijg ik het gewenste resultaat (ieg voor punt 1) terug:
voor punt 2 weet ik hem nog niet maar die stuur ik later misschien nog in.... nu moet ik naar het voetbalveld!!
Ik heb nog ff zitten proberen hier en het nagemaakt....
en als ik het volgende doe in mysql dan krijg ik het gewenste resultaat (ieg voor punt 1) terug:
code:
1
| select nummer,titel,max(datum) as datum from rapporten group by nummer order by nummer ASC,datum DESC; |
voor punt 2 weet ik hem nog niet maar die stuur ik later misschien nog in.... nu moet ik naar het voetbalveld!!
't Is dus HEEL maf dat de volgende query bij mij precies hetzelfe resultaat heeft:
Volgens mij is er iets niet pluis met die datums. Ik ga effe aan de gang met die unix_timestamp toestand. Wellicht helpt dat.
code:
1
| select nummer,titel,datum from raporten group by nummer |
Volgens mij is er iets niet pluis met die datums. Ik ga effe aan de gang met die unix_timestamp toestand. Wellicht helpt dat.
[ specs ] [ Tweaker gallery ]
Deze query geeft inderdaad de juiste resultaten met dat db'tje wat marcusk hier postte. Vreemd genoeg doet die query het niet in mijn db. Ik heb zo het idee dat het aan die datumvelden ligt. Die dingen zien er zo uit: 20-10-2001, ipv. bv. een unix-timestamp. Als ik ze daarnaar converteer met de unix_timestamp functie, dan haalt het ook niks uit, overigens. Wel maf...klappie:
code:
1 select nummer,titel,max(datum) as datum from rapporten group by nummer order by nummer ASC,datum DESC;
Ben je al uitgevoetbald?
[ specs ] [ Tweaker gallery ]
Komt dat niet omdat de datum voor de UNIX_TIMESTAMP functie 'yyyy-mm-dd' moet zijn ipv 'dd-mm-yyyy' ?Op zaterdag 20 oktober 2001 20:59 schreef Explore het volgende:
Die dingen zien er zo uit: 20-10-2001, ipv. bv. een unix-timestamp. Als ik ze daarnaar converteer met de unix_timestamp functie, dan haalt het ook niks uit, overigens. Wel maf...
Verwijderd
Marcusk heeft gelijk:
Unix_timestamp werkt alleen maar als je de datum notatie YYMMDD of YYYYMMDD gebruikt...
Dit wist ik dus ook niet, da's een beetje minder!
van welk type is dat datum veld?? Een date veld of gewoon een varchar die je zelf opbouwd??
En ik ben inderdaad uitgevoetbald, tenminste mijn broer moest voetballen.
Ik ben een van de vaste toeschouwers van het bierteam!!
Helaas hebben ze 4 - 1 verloren!!
Unix_timestamp werkt alleen maar als je de datum notatie YYMMDD of YYYYMMDD gebruikt...
Dit wist ik dus ook niet, da's een beetje minder!
van welk type is dat datum veld?? Een date veld of gewoon een varchar die je zelf opbouwd??
En ik ben inderdaad uitgevoetbald, tenminste mijn broer moest voetballen.
Ik ben een van de vaste toeschouwers van het bierteam!!
Helaas hebben ze 4 - 1 verloren!!
Pagina: 1