Avatar billede jakobdo Ekspert
15. marts 2004 - 14:37 Der er 6 kommentarer og
1 løsning

Hvordan får jeg trukket data ud af to tabeller?

Hej,
jeg er ved at lave en fodbold side, og har følgende tabeller:

spiller:
id
navn

kampe:
id
modstander
modstanderMål

scorer:
id
kamp_id (fremmednøgle fra kampe.id)
spiller_id (fremmednøgle fra spiller.id)

Jeg vil lave et udtræk på denne måde:

Have alle kampe:

Noget i stil med:

SELECT * FROM KAMPE.
Men så vil jeg også have et felt, som indeholder:

Hvor mange gange et spiller har scoret:

Noget i stil med:

SELECT COUNT(id) FROM scorer WHERE id = kamp_id

Kan jeg lave dette i en SQL sætning:

I dag har jeg løst det på denne måde:

$q = mysql_query("SELECT *,UNIX_TIMESTAMP(datotid) AS unix from kampe");
while ($r = mysql_fetch_assoc($q))
{
    if ($r['modstandMaal'] == NULL)
        echo "<td class='kampprogram'>N/A</td></tr>";
    else
    {
        //echo "<td class='kampprogram'>".$r['modstandMaal']."</td></tr>";
        $q2 = mysql_query("SELECT COUNT(id) FROM topscorer WHERE k_id = '".$r['id']."'");
        while ($r2 = mysql_fetch_array($q2))
        {
            echo "<td class='kampprogram'>".$r2[0]."</td></tr>";
        }
    }
}
Avatar billede roo104 Nybegynder
15. marts 2004 - 20:18 #1
Måske sådan noget her, det finder hvor mange mål hver spiller levede i en bestemt kamp:

SELECT spiller.navn, count(spiller.navn) as antal_maal FROM scorer, spiller WHERE spiller.id = scorer.spiller_id AND  scorer.kamp_id = 1 group by spiller.navn
Avatar billede jakobdo Ekspert
16. marts 2004 - 08:15 #2
Mit spørgsmål er om jeg kan slå disse 2 SQL'er sammen til en:

$q = mysql_query("SELECT *,UNIX_TIMESTAMP(datotid) AS unix from kampe");
$q2 = mysql_query("SELECT COUNT(id) FROM topscorer WHERE k_id = '".$r['id']."'");
Avatar billede jakobdo Ekspert
18. marts 2004 - 09:56 #3
D
Avatar billede jakobdo Ekspert
18. marts 2004 - 09:58 #4
Din løsning giver mig følgende:

Og antalMål = 4

Spiller1 - 1 mål
Spiller2 - 2 mål
Spiller3 - 1 mål

Jeg har løst det med denne SQL sætning:
SELECT brugere.nick AS bNick FROM topscorer, brugere WHERE brugere.id = topscorer.b_id AND topscorer.k_id = 1

Og så lige en lille php ting:
$antalMaal = mysql_num_rows($q);

:o)
Avatar billede jakobdo Ekspert
18. marts 2004 - 09:58 #5
Men du bragte mig på rette spor, så læg lige et svar til!
(var lidt hurtig til at afvise det andet) Sorry...
Avatar billede roo104 Nybegynder
18. marts 2004 - 17:54 #6
så skal du oprette nyt spørgsmål
Avatar billede roo104 Nybegynder
18. marts 2004 - 17:54 #7
jo sq :) det kunne man godt
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
Computerworld tilbyder specialiserede kurser i database-management

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