webForumDet fria alternativet

Hämta användarnas namn?

8 svar · 572 visningar · startad av streetrobban

streetrobbanMedlem sedan jan. 20011 140 inlägg
#1

Tjena,

Jag har en tabell (Games) där jag sparar spelarnas ID i fält (Player1ID, Player2ID etc.) för varje match. Jag hämtar sedan matcherna från Games och skriver ut alla fält Player1ID, Player2ID etc. Men hur kopplar jag spelarnas ID nummer med namnen från en annan tabell som heter Players där varje spelare ligger?

Hoppas någon förstår och orkar hjälpa mig :)

noshorninMedlem sedan aug. 2008816 inlägg
#2

sql join: http://www.w3schools.com/Sql/sql_join.asp

streetrobbanMedlem sedan jan. 20011 140 inlägg
#3

noshornin skrev:

sql join: http://www.w3schools.com/Sql/sql_join.asp

Yes, jag kör en JOIN nu för att plocka fram namnen från Players. Men jag får bara med första namnet.

$get = mysql_query("SELECT Pla.Name, Nig.Date, Nig.HostID, Nig.Player1ID, Nig.Player2ID, Nig.Player3ID
FROM PokerNights Nig
INNER JOIN PokerPlayers AS Pla ON Pla.ID = Nig.Player1ID");
$Player1ID = $row['Name'];
$Player2ID = $row['Name'];
$Player3ID = $row['Name'];
echo "<td class=\"TDRegular\">$Player1ID, $Player2ID, $Player3ID.</td>";
voigtann1Medlem sedan juni 20019 519 inlägg
#4

Du måste sätta ett alias på spelare2 namn, om du inte ha fått svar innan jag kommer hem så skall jag se om jag inte kan skriva din del fråga

voigtann1Medlem sedan juni 20019 519 inlägg
#5
$get = mysql_query("
SELECT
    Pla.Name as Player1Name,
    Pla2.Name as Player2Name,
    Pla3.Name as Player3Name,
    Nig.Date,
    Nig.HostID,
    Nig.Player1ID,
    Nig.Player2ID,
    Nig.Player3ID
FROM
    PokerNights Nig
INNER JOIN
    PokerPlayers Pla
        ON Pla.ID = Nig.Player1ID
INNER JOIN
    PokerPlayers Pla2
        ON Pla2.ID = Nig.Player2ID
INNER JOIN
    PokerPlayers Pla3
        ON Pla3.ID = Nig.Player3ID
");

Vet inte om detta är det mest optimala, inte heller testad.

rhdfMedlem sedan okt. 2007446 inlägg
#6

det optimala hade ju varit att ha spelarna i en egen kopplingstabell
tblGames
GameID..........

tblPlayers
PlayerID | PlayerName ..........

tblGamePlayers
GameID | PlayerID

streetrobbanMedlem sedan jan. 20011 140 inlägg
#7

voigtann1 skrev:

$get = mysql_query("
SELECT
    Pla.Name as Player1Name,
    Pla2.Name as Player2Name,
    Pla3.Name as Player3Name,
    Nig.Date,
    Nig.HostID,
    Nig.Player1ID,
    Nig.Player2ID,
    Nig.Player3ID
FROM
    PokerNights Nig
INNER JOIN
    PokerPlayers Pla
        ON Pla.ID = Nig.Player1ID
INNER JOIN
    PokerPlayers Pla2
        ON Pla2.ID = Nig.Player2ID
INNER JOIN
    PokerPlayers Pla3
        ON Pla3.ID = Nig.Player3ID
");

Vet inte om detta är det mest optimala, inte heller testad.

Detta funkar, nästan! Min tabell (PokerNights) består av flera fält (Player1ID till Player20ID) eftersom det alltid är olika antal deltagare. Så säg att det är 6 deltagare, då blir ju 14 fält tomma, som bara innehåller en 0:a. När detta är fallet skrivs inget ut alls. Om jag istället bestämde i SQL-satsen att bara hämta de första 6 spelarna då funkar det prima. Går det att komma runt detta på något sätt?

voigtann1Medlem sedan juni 20019 519 inlägg
#8

Kör som rhdf skriver, betydligt smartare.

streetrobbanMedlem sedan jan. 20011 140 inlägg
#9

Okej. Gör om, gör rätt :)

140 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)