Avatar billede hypofysen Nybegynder
24. november 2009 - 16:02 Der er 12 kommentarer og
1 løsning

hjælp til at hente data fra 2 tabeller

jeg har 2 tabeller i min db

EVENT,
id:
eventname:

EVENTRESULT,
id:
eventid:
navn:
sluttid:

hvordan udskriver jeg nemmest det som en tabel med følgende td'er:

event, antal deltager, antal gennemførte, hurtigste tid, gennemsnitstid.

Håber der er en der kan komme med et hint til hvordan jeg får lavet kaldet til min database :)
Avatar billede arne_v Ekspert
24. november 2009 - 16:59 #1
Proev:

SELECT event.eventname, COUNT(eventresult.id), COUNT(eventresultat.sluttid), MIN(eventresultat.sluttid), AVG(eventresultat.sluttid)
FROM event JOIN eventresultat  ON event.id=eventresultat.eventid
Avatar billede hypofysen Nybegynder
24. november 2009 - 18:26 #2
ser umiddelbart rigtigt ud, men får kun en række udskrevt på den måde.. hvad nu hvis der er flere resultater?

$query = mysqli_query($con, "SELECT event.eventname, COUNT(eventresult.id), COUNT(eventresult.FinishTime), MIN(eventresult.FinishTime), AVG(eventresult.FinishTime) FROM event JOIN eventresult  ON event.id=eventresult.EventId");
while($result = mysqli_fetch_array($query))
{
print $result['AVG(eventresult.FinishTime)']."<br />";
print $result['MIN(eventresult.FinishTime)']."<br />";
print $result['COUNT(eventresult.id)']."<br />";
print $result['eventname']."<br />";
}
Avatar billede arne_v Ekspert
24. november 2009 - 18:35 #3
der mangler vist en GROUP BY:

SELECT event.eventname, COUNT(eventresult.id), COUNT(eventresultat.sluttid), MIN(eventresultat.sluttid), AVG(eventresultat.sluttid)
FROM event JOIN eventresultat  ON event.id=eventresultat.eventid
GROUP BY event.eventname
Avatar billede arne_v Ekspert
24. november 2009 - 18:36 #4
Hvis der er flere raekke ri tabellerne boer:

while($result = mysqli_fetch_array($query))

output flere raekker!
Avatar billede hypofysen Nybegynder
24. november 2009 - 18:53 #5
1000 tak det virkede bare, smid et svar!

Lige et tillægsspørgsmål hvis jeg vil udskrive hurtigste tid både for mænd og kvinder skal der så laves en extra query eller kan det sorteres i samme sql sætning, jeg har et felt i min db der hedder gender?

uanset smid et svar du har været til stor hjælp, 1000 tak
Avatar billede arne_v Ekspert
24. november 2009 - 19:11 #6
svar
Avatar billede arne_v Ekspert
24. november 2009 - 19:12 #7
Proev:

SELECT event.eventname, eventresultat.gender, COUNT(eventresult.id), COUNT(eventresultat.sluttid), MIN(eventresultat.sluttid), AVG(eventresultat.sluttid)
FROM event JOIN eventresultat  ON event.id=eventresultat.eventid
GROUP BY event.eventname , eventresultat.gender
Avatar billede hypofysen Nybegynder
24. november 2009 - 19:21 #8
den fangede jeg ikke helt det er den her der skal udskrives 2 gange en for mand og en for kvinde..

MIN(eventresultat.sluttid)
Avatar billede arne_v Ekspert
24. november 2009 - 19:32 #9
Min SQL udskriver en raekke for hver koen. Din applikation kan saa formatere resultatet efter behov.

Hm - der er maaske et problem - den vil saa ogsaa tage gennesmnittet per koen.

Er det et problem?
Avatar billede hypofysen Nybegynder
24. november 2009 - 19:42 #10
det jeg tænker på er, hvordan jeg får skrevet begge resultater på en række

foreksempel

eventnavn - antal deltagere - hurtigste mand - hurtigste kvinde
Avatar billede arne_v Ekspert
24. november 2009 - 19:49 #11
Det skulle du i saa fald kode i PHP.

Det kan ogsaa laves i SQL ved at lave to queries, en for m og en for k, og saa joine dem sammen.
Avatar billede hypofysen Nybegynder
24. november 2009 - 20:12 #12
ok jeg forsøger lidt google join result,

tusind tak for hjælpen
Avatar billede arne_v Ekspert
25. november 2009 - 04:16 #13
Teknikken er:

SELECT *
FROM (SELECT ... WHERE gender='m') x JOIN (SELECT ... WHERE gender='f') y ON x.id=y.id
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