Avatar billede simotho Nybegynder
21. december 2008 - 11:42 Der er 10 kommentarer

Hjælp til Inner Join

Nogle som har forstadt på inner join der kan se hvad jeg gør galt i denne kode:


$hent_mail = mysql_query("SELECT * FROM mail WHERE til = '$_SESSION[id]' INNER JOIN mail
ON users.id=mail.fra ORDER BY id DESC");


Har to tabeller:

Users og mail

I users skal jeg hente brugerens brugernavn

Og i mail står der bare brugerens id, så det skal jeg så ha konverteret om til brugerens brugernavn istedet.

Men den kode virker ikke ^^
Hvis jeg prøver at udskrive viser den bare blankt der hvor brugernavnet skulle ha stået ( kan selvfølgelig også bare være mig der gør det komplet forkert :D )
Avatar billede mireigi Novice
21. december 2008 - 12:22 #1
Givet følgende tabeller:
[TABLE: t_Mail (MailID (PK), UserID (FK), Subject, Body)]
[TABLE: t_User (UserID (PK), FirstName, LastName)]

og:

@ID = $_SESSION[id]

får vi:

SELECT t_Mail.MailID, t_Mail.Subject, t_Mail.Body, t_User.FirstName, User.LastName
  FROM t_Mail INNER JOIN t_User ON t_Mail.UserID = t_User.UserID
  WHERE (t_Mail.UserID = @ID)
  ORDER BY t_Mail.ID DESC
Avatar billede dkfire Nybegynder
21. december 2008 - 12:24 #2
Start med at liste struturen for dine to tabeller og hvordan de hænger sammen.
Avatar billede simotho Nybegynder
21. december 2008 - 13:17 #3
Jeg ville bare ha hjælp til den kode jeg skrev længere oppe, altså hvordan den sættes sammen til en sætning hvor jeg kan udskrive brugernavnet frem for id'et
Avatar billede mireigi Novice
21. december 2008 - 14:17 #4
Det kan du med mit eksempel.
Avatar billede dkfire Nybegynder
21. december 2008 - 14:32 #5
For at kunne hjælpe dig helt rigtig, så bliver vi nød til at se hvilke felter dine tabeller indeholder samt hvordan de hænger sammen.
Avatar billede mireigi Novice
21. december 2008 - 15:02 #6
Her er den hurtige løsning til dit problem:

$hent_mail = mysql_query("SELECT * FROM mail INNER JOIN mail
ON users.id=mail.fra WHERE til = '$_SESSION[id]' ORDER BY id DESC");

Men du bør undgå "SELECT *", og i stedet kun udtrække de data du har behov for.
Avatar billede simotho Nybegynder
21. december 2008 - 15:20 #7
Skal i ha de to tabeller som jeg skal hente data fra?
Avatar billede dkfire Nybegynder
21. december 2008 - 16:50 #8
Det vil da hjælpe ;-)
Avatar billede simotho Nybegynder
21. december 2008 - 18:17 #9
Okay ;)

Users :

  `id` bigint(20) NOT NULL auto_increment,
  `brugernavn` varchar(255) NOT NULL default '',
  `adgangskode` varchar(255) NOT NULL default '',
  `point` varchar(255) NOT NULL default '50',
  `Rang` varchar(255) NOT NULL default 'Bruger',
  `logintid` varchar(255) NOT NULL default '',
  `sidstset` varchar(255) NOT NULL default 'Offline',
  `fritekst` longtext NOT NULL,
  `alder` varchar(255) NOT NULL default 'Ikke angivet',
  `status` varchar(255) NOT NULL default 'Ikke angivet',
  `landsdel` varchar(255) NOT NULL default 'Ikke angivet',
  `besk` varchar(255) NOT NULL default 'Ikke angivet',
  `navn` varchar(255) NOT NULL default 'Ikke angivet',
  `billede` varchar(255) NOT NULL,
  `civilstatus` varchar(255) NOT NULL,
  `logudtid` varchar(255) NOT NULL,
  `totaltid` varchar(255) NOT NULL,
  `online` varchar(255) NOT NULL default 'Offline',
  `penge` int(255) NOT NULL default '100000',
  `rangliste` varchar(255) NOT NULL default 'Nykommende',
  `lukket` varchar(255) NOT NULL default 'nej',
  `kommentar` varchar(255) NOT NULL,

Mail:

  `id` int(4) NOT NULL auto_increment,
  `til` int(4) NOT NULL,
  `fra` int(4) NOT NULL,
  `dato` varchar(25) NOT NULL,
  `besked` longtext NOT NULL,
  `overskrift` varchar(255) NOT NULL,
  `laest` int(1) NOT NULL default '0',

Jeg skal hente brugernavnet fra users indtil mail

Så istedet for der står :
Fra id : 5
Skal der stå
Fra : simotho f.eks ;)

Håber i forstå hvad jeg mener med det ;)
Avatar billede dkfire Nybegynder
22. december 2008 - 10:17 #10
Og hvordan ser din kode ud nu ??

Hvis jeg har forstået det rigtig, så er de numre som står i 'til' og 'fra' brugernes id fra Users tabellen ??
Og du vil så gerne have skiftet dem ud med 'brugernavn' eller 'navn' fra Users tabellen ??
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