Avatar billede supersquirrel Nybegynder
11. december 2008 - 09:58 Der er 7 kommentarer og
1 løsning

Left join spørgsmål

Hejsa!

Jeg har længe gået og tænkt over, hvordan det nu lige er "LEFT JOIN" fungerer.

Så vidt jeg ved, så kan man sammeligne 2 tabeller, og hive en fælles info ud - eller noget i den stil..

Det jeg har tænkt mig, er at hive et brugernavn ud fra en tabel, og sammenligne det med et brugernavn fra en anden tabel, og til slut, hive et navn ud fra nr. 2 tabel.

*** Første tabel ***
id
brugernavn
.. en masse andet ..

*** Nummer 2 tabel ***
id
brugernavn
fornavn
efternavn
.. en masse andet ..

Jeg skal så, som sagt, bruge brugernavnet fra første tabel, til at kunne hive de informationer ud, som nummer 2 tabel har om det brugernavn. Ex. skal jeg bruge Fornavn og Efternavn fra nummer 2 tabel..
- Håber i forstår =)
Avatar billede supersquirrel Nybegynder
11. december 2008 - 10:09 #1
Erh.. Det skulle nok have været under mysql :(
Avatar billede mireigi Novice
11. december 2008 - 10:24 #2
SELECT Tabel_1.Id, Tabel_2.Brugernavn, Tabel_2.Fornavn, Tabel_2.Efternavn FROM Tabel_1
    LEFT OUTER JOIN Tabel_2 ON Tabel_1.Id = Tabel_2.Id
    AND Tabel_1.Brugernavn = Tabel_2.Brugernavn;

Dette vil give dig alle informationerne fra Tabel_1, ligegyldigt om der findes et match i Tabel_2. Hvis du har følgende tabeller, vil udtrækket være som nederst.

[TABEL_1 (Id, Brugernavn)]
1, ML
2, GH
3, PS
4, KJ


[TABEL_2 (Id, Brugernavn, Fornavn, Efternavn)]
1, ML, Michael, Larsen
4, KJ, Karen, Jensen


[RESULTAT (Id, Brugernavn, Fornavn, Efternavn)]
1, ML, Michael, Larsen
2, GH, null, null
3, PS, null, null
4, KJ, Karen, Jensen

De ønskede værdier fra Tabel_2 er simpelthen bare null hvis der ikke bliver fundet noget match.
Avatar billede supersquirrel Nybegynder
11. december 2008 - 12:47 #3
Så vil mit udtræk, så være denne:

$sql = mysql_query("SELECT tbl_blogs.username, tbl_blogs.content tbl_community.username, tbl_community.forname, tbl_community.lastname FROM tbl_blogs
    LEFT OUTER JOIN tbl_community ON tbl_blogs.username = tbl_community.username") or die("Fejl: " . mysql_error());

Så hiver den dette ud (skulle jeg mene):
- Brugernavn og content, ud fra tbl_blogs
- Brugernavn, fornavn og efternavn, ud fra tbl_community

Hvordan udskriver jeg så de forskellige ting? Altså "print [???];"
Avatar billede mireigi Novice
11. december 2008 - 18:08 #4
Du skal ikke have tbl_community.username med ud, det har du allerede med fra tbl_blogs.username.

Du kan udskrive det med:
print[Username]
print[Content]
print[Forname]
print[Lastname]
Avatar billede supersquirrel Nybegynder
11. december 2008 - 22:16 #5
Hej!

Mit sql ser således ud:
<?php
$sql = mysql_query("SELECT tbl_blogs.username, tbl_blogs.content, tbl_community.forname, tbl_community.lastname FROM tbl_blogs
    LEFT OUTER JOIN tbl_community ON tbl_blogs.username = tbl_community.username") or die("Fejl: " . mysql_error());
while($row = mysql_fetch_assoc($sql)){
?>

Og det jeg udskriver ser således ud:
<?php print $row['forname'] ." ". $row['lastname'];?> skriver...</div>
<div id="proTxt"><?=print $row['content'];?></div>

.. Den kan godt skrive fornavn og efternavn ud, men ikke content.. hvorfor?
Avatar billede supersquirrel Nybegynder
11. december 2008 - 23:08 #6
nevermind..
Skulle jo bare skrive <?php istedet :]]


- Smid et svar mireigi :D
Avatar billede mireigi Novice
11. december 2008 - 23:12 #7
Velbekomme :)
Avatar billede supersquirrel Nybegynder
11. december 2008 - 23:59 #8
Tak for hjælpen ;o)
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