Avatar billede danand Nybegynder
15. juli 2003 - 12:12 Der er 15 kommentarer og
2 løsninger

Finde højeste ugenummer i tabel

Hej Eksperter
Jeg er ved at lave en ugedagbog.

Jeg har en tabelrække i en database kaldet "uge" hvor der lagres nogle ugenummre, ved udtræk fra databasen skal ugen med det højeste nummer have en anden farve ved visning på siden. Dette havde jeg tænk kunne gøres ved at finde det højest ugenummer i tabellen og ved udtræk sammenligne om ugenumrene er ens.

Spørgsmålet er om det er muligt direkte i en mysql forespørgsel at finde det højeste ugenummer eller om alle ugenumre skal hentes ud af databasen og sammenlignes med php
Avatar billede codebase Praktikant
15. juli 2003 - 12:14 #1
SELECT * from TABLENAME ORDER BY uge DESC LIMIT 0,1
Avatar billede bearhugx Nybegynder
15. juli 2003 - 12:20 #2
eller select max(uge) from tablenavn
Avatar billede bearhugx Nybegynder
15. juli 2003 - 12:24 #3
dog vil din kode, codebase, være langsommere, idet at den først tager et helt søgesæt (alle uger) - derefter bliver disse sorteret, så den "største" uge kommer først - og tilsidst vælges den øverste post...

I mit tilfælde vil den bare løbe "uge" igennem og holde øje med den største værdi... - dvs. ingen sortering, eller midlertidig lagring af et søgesæt
Avatar billede danand Nybegynder
15. juli 2003 - 12:28 #4
ved følgende kode får jeg blot dettet outputtet "Resource id #2" -stedet i databasen - hvordan får jeg ugenummeret?
$topuge=mysql_query("select max(uge) from dagbog");
Avatar billede bearhugx Nybegynder
15. juli 2003 - 12:29 #5
det, som du evt kan gøre er noget a la følgende...

$rs = mysql_query("SELECT *, max(uge) as MAXUGE FROM tablename ORDER BY uge ASC");

for( i=0; i< mysql_num_rows($rs); ++i) {
  $row = mysql_fetch_object($rs); // kan også bruge fetch_array
  if( $row->uge == $row->MAXUGE ) {
    //LAV NOGET SPECIELT FORDI DET ER MAXUGE :-)
  }
}
Avatar billede bearhugx Nybegynder
15. juli 2003 - 12:32 #6
det som du får tilbage med select max - er faktisk et søgeset - som du skal behandle ligesom alle andre søgesæt -- dvs. at du skal hive den første række ud og så hente værdien ud der....

i det eksempel som jeg har lavet ovenover kommer der en kolonne med på alle rækkerne, - men der kan man så også hurtigt udtrække MAXUGE (den vil så stå der én gang for hver række)

Ellers så skal du til at lave to søgninger - først en til at finde ud af, hvad maxuge er - og derefter en til at gennemløbe ugerne...
Avatar billede codebase Praktikant
15. juli 2003 - 12:33 #7
bearhugx --> Det vart ikke et spg. vedr. optimering, men HVORDAN kan man...:-)
Avatar billede bearhugx Nybegynder
15. juli 2003 - 12:34 #8
i know :-) ...
Avatar billede bearhugx Nybegynder
15. juli 2003 - 12:34 #9
*S*
Avatar billede danand Nybegynder
15. juli 2003 - 12:38 #10
altså - hvordan gør jeg hvis jeg vil udtrække det højeste ugenummer (kun nummeret) og vise det i starten af dagbogen?
Avatar billede bearhugx Nybegynder
15. juli 2003 - 12:41 #11
$rs_maxuge = mysql_query("SELECT max(uge) as MAXUGE FROM dagbog");
if( mysql_num_rows($rs_maxuge) == 1 ) {
  $row = mysql_fetch_object($rs_maxuge);
  $maxuge = $row->MAXUGE;
}

derefter kan du bruge $maxuge
Avatar billede danand Nybegynder
15. juli 2003 - 12:43 #12
fino gardino - læg et svar begge hvis i har lyst til at rave flere point til jer :D
Avatar billede bearhugx Nybegynder
15. juli 2003 - 12:44 #13
^svar^
Avatar billede codebase Praktikant
15. juli 2003 - 12:51 #14
>1. svar <
Avatar billede bearhugx Nybegynder
15. juli 2003 - 13:09 #15
codebase - kender du forresten en php-funktion til at tage værdien ud med det samme
hvis man f.eks kar et rs som ser sådan ud :
+-----+
| Num |
+-----+
|  4  |
+-----+

og man bruger $rs = mysql_query("SELECT Num FROM tabelnavn");

er der så en funktion som med $rs kan udtrække Num - uden at man først skal til at hente rækken og derefter værdien - noget a la
  getValue( $rs, "Num");
eller lign...
Avatar billede bearhugx Nybegynder
15. juli 2003 - 13:18 #16
ammm .. fandt det lige selv

mit indlæg @ 12:41 kan så omskrives til følgende

$rs_maxuge = mysql_query("SELECT max(uge) AS max FROM dagbog");
$maxuge = mysql_result( $rs_maxuge, 0, "max" );
Avatar billede codebase Praktikant
15. juli 2003 - 13:37 #17
nope, men  denne her stump kunn nok gøre det.
$num = mysql_fetch_array( mysql_query("SELECT * FROM num") );
echo $num[0];

eller
$num = mysql_fetch_object( mysql_query("SELECT * FROM num") );

men, den rigtig måde at kode det på ville jo være at lave en klasse, og kode en funktion i klassen som retunere værdien.
echo $num->num;
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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