Drejer det sig om hvor mange af deltagerne i en bestemt tur er mellem 20 og 25 år? I så fald har du brug for en tabel med ryttere med rytter_id og fødselsdag (born), en tabel med ture med tur_id og dato (start), og en tabel der viser hvilke ryttere deltager i hvilke løb, for eksempel:
rytter rytter_id born
tur tur_id start
deltagere tur_id rytter_id
Med sådanne tabeller finder du antallet af ryttere mellem 20 og 25 år der deltager i turen med tur_id = $tur (ikke testet):
SELECT COUNT(*) FROM deltagere d JOIN rytter r ON d.rytter_id = r.rytter_id JOIN tur t ON d.tur_id = t.tur_id WHERE t.tur_id = $tur AND DATEDIFF(t.start, r.born) < 365*25 AND DATEDIFF(t.start, r.born) >= 365*20
Jeg kan ikke se, hvilke data du har i de tabeller du nævner, og det synes at du ikke bruger data fra tabellen teams.
Fortæl om jeg har forstået hvad du vil opnå, og fortæl om din data struktur.
Hej Christian. Sender lige det hele scriptet. Det er helt rigtigt med hvor mange i en tur der er mellem 20 og 25 år. Med dette trækker jeg alle ryttere ud for et bestemt år. Så er det jeg gerne vil dele dem op i forskellige aldersklasser.
<?php $res = mysql_query("SELECT MAX(wd.year) AS year, wd.hold AS hold, wd.nummer AS nummer, wd.navn AS navn, wd.start AS start, t.flags AS flags, t.id AS rytterid, t.name AS ryttername, t.country AS country, t.logo AS logo, t.born AS born, te.id AS teamid, te.deltaget AS deltaget, te.name AS teamname,
DATEDIFF(wd.start, t.born) as alder
FROM alleaar AS wd INNER JOIN turen AS t ON wd.navn = t.id INNER JOIN teams AS te ON wd.hold = te.id
WHERE wd.year=$aar AND wd.navn = t.id AND alder BETWEEN 1 AND 25
Jeg er nok for dum til det her. For at kunne svare på spørgsmål der drejer sig om data er jeg nødt til at forstå dataernes struktur. Jeg leder i dette spørgsmål efter en tabel for ryttere, hvor hver rytter kun står en gang med rytterens id, navn, fødselsdag, og lignende. Er det tabellen 'turen'? Tabellens navn kunne tyde på, at 'turen' i stedet er en tabel over deltagelse i ture, således at en rytter der i tidens løb har deltaget i ti forskellige ture vil forekomme i tabellen ti gange. Er det således? I så fald, hvis en rytter bliver indskrevet, lad os sige, som Ole Bo Hansen til et løb og som Ole Bo-Hansen til det næste løb og Ole Hansen til det tredje løb, så vil denne rytter komme til at tælle tredobbelt i statistikkerne.
Så er jeg også i tvivl om den select du viser i #3. Får du med denne resultaterne trukket ud uden problemer? DATEDIFF præsenterer dato forskellene i dage, så når du søger efter BETWEEN 1 AND 25 ville jeg tro du kun får ryttere med der er mindre end en måned gammel. Og i mit system vil det ikke virke at sige 'alder BETEEN ...'. Jeg ville være nødt til at gentage 'DATEDIFF(wd.start, t.born) BETWEEN ...'
Så hvad synes du? Skal vi give op og lade spørgsmålet ligge, eller er det umagen værd, at du prøver at forklare videre?
(Jeg ved godt, at dette ikke er spørgsmålet, men jeg sad og legede med at strukturere dataerne for det jeg tror det drejer sig om. Jeg ser tre slags 'ting,' ryttere, ture, og teams, som jeg ville lave tre forskellige tabeller for:
(1) 'ryttere' med id, navn, fødselsdag, måske adresse, medlemsnummer, o.s.v. (2) 'ture' med id, dato, måske et navn, turens længde, o.s.v. (men ikke hvem der har deltaget i turen.) (3) 'teams' med id, navn, o.s.v. (men ikke hvem der har deltaget i teamet.)
Ud over disse tre 'statiske' tabeller ville jeg så lave en tabel, 'deltagelse', med det der skete, det vil sige hvilke ryttere der deltog i hvilke ture som medlem af hvilke teams, og vel også hvad rytterens resultater var såsom tiden og placeringen. Tabellen kunne have felterne id, rytter_id, tur_id, team_id, tid, placering, o.s.v.
Med en sådan data/tabel struktur ville du nemt og bekvemt kunne trække alle slags oplysninger ud, også oplysninger du ikke havde tænkt på da du lavede tabellerne.)
Hej Christian. Jeg er ked af at du havde alt det besvær, men jo det hele virker som det skal nu, også ovenstående script. Jeg er ikke sikker på andet, end det var dig der hjalp mig med det i sin tid.
Jeg har en tabel, hvor alle ryttere er tastet ind år for år. En tabel (lidt ulogisk, men 'turen' skulle måske omdøbe den)med alle rytteres data, og en tabel med alle hold. Til sidst en tabel hvor rytterene er delt ud på de hold, de har deltaget i det pågældende år.
Synes godt om
Ny brugerNybegynder
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.