Avatar billede sevinding Juniormester
23. oktober 2010 - 06:26 Der er 19 kommentarer og
1 løsning

Vælge laveste værdi

Hej igen.
Jeg har en tabel, hvor den samme rytter optræder flere år.
Mit problem er, at jeg via dette script gerne vil isolere det laveste årstal på en rytter, så jeg kan trække ud hvornår han deltog første gang:

wd.year AS year,
wd.navn AS navn,
wd.nummer AS nummer,
wd.hold AS hold,
wd.udgaaet AS udgaaet,
te.id AS teamid,
te.name AS teamname,
t.id AS rytterid,
t.flags AS flags,
t.fra AS fra,
t.new AS new,
t.logo AS logo,
t.name AS name


FROM
    alleaar AS wd
    INNER JOIN turen AS t
INNER JOIN
    teams AS te
ON
  wd.hold = te.id

WHERE wd.year=$aar AND wd.navn = t.id AND wd.hold = te.id

GROUP BY
t.id

ORDER BY wd.nummer ASC

Som det er nu, får jeg samtlige ryttere det pågældene år.
Avatar billede showsource Seniormester
23. oktober 2010 - 07:35 #1
Noget a'la'

MIN(wd.year) AS year

og

ORDER BY wd.nummer ASC LIMIT 1

Men der kan vel være flere fra samme år ?
Avatar billede sevinding Juniormester
23. oktober 2010 - 09:38 #2
Takker, men hvis jeg lægger MIN(wd.year) AS year) AS year ind i:

WHERE wd.year=$aar AND wd.navn = t.id AND wd.hold = te.id

så det ser sådan ud:

WHERE wd.year=$aar AND wd.navn = t.id AND wd.hold = te.id AND MIN(wd.year) AS year

kommer der slet ikke noget ud.

Og jo, der kan være mange ryttere fra samme år.
Avatar billede showsource Seniormester
23. oktober 2010 - 09:54 #3
Skal du ikke blot

WHERE wd.navn = t.id AND wd.hold = te.id

Det gi'r jo ingen mening at hente MIN() hvis du ved hvilket år du vil ha' fat i.

Og ok, jeg er ikke lige helt på det rene med din query ! :O)
Avatar billede sevinding Juniormester
23. oktober 2010 - 09:58 #4
Hvis jeg bruger:

WHERE wd.year=$aar AND wd.navn = t.id AND wd.hold = te.id

trækker jeg alle de ryttere ud der deltager det pågældende år.
Det jeg gerne vil er, kun,  at trække de ryttere ud, der er med første gang det pågældende år
Avatar billede showsource Seniormester
23. oktober 2010 - 10:19 #5
ah, ok
Kræver lige noget mere "logik" for mig, men er på vej ud af døren lige nu.

Måske senere ...
Avatar billede sevinding Juniormester
23. oktober 2010 - 10:21 #6
ok
Avatar billede showsource Seniormester
24. oktober 2010 - 21:57 #7
Jeg er nu ikke helt med på hvad det er du gerne vil.

Du vil gerne hente ryttere for et specifikt år.
Men det skal kun være ryttere som IKKE har deltaget tidligere år ?
Avatar billede sevinding Juniormester
25. oktober 2010 - 07:00 #8
Det er helt rigtigt forstået.
F. eks. deltog Bjarne Riis første gang i 1989 sammen med en del andre ryttere.
Det er dem jeg gerne vil trække ud.
Avatar billede showsource Seniormester
25. oktober 2010 - 12:53 #9
Er det egentlig ikke blot

WHERE MIN(wd.year)=$aar AND wd.navn = t.id AND wd.hold = te.id

?
Avatar billede sevinding Juniormester
25. oktober 2010 - 13:04 #10
Det havde jeg selv håbet det var, men der er slet ikke noget udtræk.
Avatar billede showsource Seniormester
25. oktober 2010 - 13:20 #11
Skud i tågen:
SELECT MIN(wd.year) as firstyear
........
WHERE wd.navn = t.id AND wd.hold = te.id
HAVING firstyear = $aar
Avatar billede sevinding Juniormester
25. oktober 2010 - 14:15 #12
Simpelthen ingen udtræk, uanset hvordan jeg prøver at flette det sammen. Har osse prøvet at ændre HAVING til AND
Avatar billede sevinding Juniormester
28. oktober 2010 - 16:47 #13
Hej showsource.
Gider du ikke lige smide et svar?
Du skal da ha noget for din indsats.
Avatar billede showsource Seniormester
28. oktober 2010 - 19:53 #14
Njahhh, i morgen, fredag, havde jeg nu tænkt mig at lave tabeller i db, og en query som henter nye ryttere i pågældende tur.

"Indstatsen" hidtil vil jrg mene burde virke, men ....... ( derfor )
Avatar billede sevinding Juniormester
29. oktober 2010 - 04:09 #15
Ok.
Så vil jeg da være så uanstændig og vente med at gi dig point :-)
Avatar billede showsource Seniormester
29. oktober 2010 - 12:43 #16
Jeg ved sgutte, men tre tabeller, rytter, hold og tours

tours og hold har felterne id og navn
rytter har felterne id, navn, hold, aarstal og tour

Og med "oldfashion" query:


$sql = "SELECT t1.navn, MIN(t1.aarstal) as aar, t2.navn as team, t3.navn as tour
        FROM rytter as t1, hold as t2, tours as t3
        WHERE t1.hold = t2.id AND t1.tour = t3.id
        GROUP BY t1.navn HAVING aar = 1991 ORDER BY t1.navn";
Avatar billede showsource Seniormester
29. oktober 2010 - 12:47 #17
Men derudover, så er det "sjovt2 at bruge forskellige i GROUP :O)
Avatar billede sevinding Juniormester
29. oktober 2010 - 17:12 #18
SÅDAN MESTER.
Det blev bare helt fedt at kunne det nu.
Det skal du bare have 1000 tak (og point) for.
Sender du lige et svar så jeg kan honorere det efter fortjeneste?
Avatar billede showsource Seniormester
29. oktober 2010 - 21:31 #19
Ja ok, men mester jeg ikke !!!
Avatar billede sevinding Juniormester
30. oktober 2010 - 05:25 #20
Hej showsource.
Er du klar til at tjene lidt flere point?
Din løsning virker fint, men der er bare en lille gåde jeg ikke kan løse.
Det er de rigtige ryttere den trækker ud, men ved nogle er rygnummer og hold fra forkert år. Se:

http://www.tourfacts.dk/year/rookies1.php?aar=2000

Skal jeg stille et nyt spørgsmål for kunne gi dig point?
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