Avatar billede weeelo Nybegynder
07. marts 2006 - 14:42 Der er 7 kommentarer og
1 løsning

Hjælp med inner join

Hejsa,

Jeg har lavet følgende udtræk, men synes ikke rigtig jeg kan gennemskue hvordan det skal skrues sammen:

SELECT players.*, clubs.name AS playerclub, countries.name AS playercountry
FROM players
  INNER JOIN clubs ON players.club = clubs.id
  INNER JOIN players ON players.country = countries.id
    WHERE id='$id'

Håber på lidt hjælp..
Avatar billede weeelo Nybegynder
07. marts 2006 - 17:08 #1
Det kan være jeg skal uddybe lidt?

Det der skal ske, er at jeg skal bruge data om en spiller (player), hvor hans klub og nationalitet er et nummer som henviser til id-nummeret i henholdsvis en klub-tabel og en nations-tabel, kaldet clubs og countries.

Det simple udtræk er: SELECT * FROM players WHERE id='$id' , men så bliver klub og nationalitet vist som id'et og ikke selve navnet.

Derfor skal de to navne fra henholdsvis "clubs" og "countries" joines til udtrækket, men jeg har problemer med at få det til at virke.

Nogen der kan hjælpe mig på vej?
Avatar billede hmortensen Nybegynder
07. marts 2006 - 17:59 #2
Virker det ikke hvis du joiner den rigtige tabel ind her:
INNER JOIN countries ON players.country = countries.id
Avatar billede weeelo Nybegynder
07. marts 2006 - 18:05 #3
Doh, havde jeg slet ikke set. Men det virker stadig ikke..

Den skriver der er fejl i linie 66:

$query = mysql_query ("
SELECT players.*, clubs.name AS playerclub, countries.name AS playercountry
FROM players
  INNER JOIN clubs ON players.club = clubs.id
  INNER JOIN countries ON players.country = countries.id
    WHERE id='$id'
    ORDER BY squadnumber");

// LINIE 66 // while ($r = mysql_fetch_array ($query)) {
Avatar billede hmortensen Nybegynder
07. marts 2006 - 18:15 #4
Prøv sådan her, så vi kan se hvad fejlen er:
$sql = "
SELECT players.*, clubs.name AS playerclub, countries.name AS playercountry
FROM players
  INNER JOIN clubs ON players.club = clubs.id
  INNER JOIN countries ON players.country = countries.id
    WHERE id='$id'
    ORDER BY squadnumber";

$query = mysql_query($sql) or die("SQL Fejl: ".mysql_error()."<br>SQL Sætning: ".$sql);
Avatar billede weeelo Nybegynder
07. marts 2006 - 18:21 #5
SQL Fejl: Column: 'id' in where clause is ambiguous
SQL Sætning: SELECT players.*, clubs.name AS playerclub, countries.name AS playercountry FROM players INNER JOIN clubs ON players.club = clubs.id INNER JOIN countries ON players.country = countries.id WHERE id='' ORDER BY squadnumber

$id var ikke sat, men jeg prøvede at ændre det til $_GET[id] uden det dog ændrede meget i fejlen:

SQL Fejl: Column: 'id' in where clause is ambiguous
SQL Sætning: SELECT players.*, clubs.name AS playerclub, countries.name AS playercountry FROM players INNER JOIN clubs ON players.club = clubs.id INNER JOIN countries ON players.country = countries.id WHERE id='2558' ORDER BY squadnumber
Avatar billede hmortensen Nybegynder
07. marts 2006 - 18:23 #6
Fordi du har flere tabeller med et id felt, så du skal fortælle hvilket:
WHERE players.id =
Avatar billede weeelo Nybegynder
07. marts 2006 - 18:35 #7
Super!

I stedet for WHERE players.id = skulle det dog være WHERE players.club =

Så nu virker det. 1000 tak og smid et svar, så er pointene dine :)
Avatar billede hmortensen Nybegynder
07. marts 2006 - 19:01 #8
Det var så lidt :)
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