Avatar billede pgm Nybegynder
10. januar 2004 - 20:55 Der er 2 kommentarer og
2 løsninger

Join med undtagelser?

Jeg skal have sat disse sammen ud fra tabellen "clan".

clan::
clanName varchar(250)
clanDescription text
clanLeader int(4) => player.playerID (hvor den skal have fat i playerHandle)
clanContact int(4) =>player.playerID (hvor den skal have fat i playerHandle)
clanLogo int(4) => picture.pictureID ( hvor den skal have pictureURI)

lige nu henter jeg det ud på dene måde:
$query = "SELECT clanName, clanDescription, playerHandle, playerHandle, clanHomepage, clanIrc, tag, tagType, pictureURI
FROM (picture LEFT JOIN clan ON picture.pictureID = clan.clanLogo)
LEFT JOIN player ON clan.clanContact = player.playerID OR clan.clanLeader = player.playerID WHERE clan.clanID =  '$_GET[cID]';

Men hvis clanLogo == NULL så henter den ingenting, hvordan skal det løses?
Avatar billede Slettet bruger
10. januar 2004 - 21:16 #1
$query = "SELECT clanName, clanDescription, playerHandle, playerHandle, clanHomepage, clanIrc, tag, tagType, pictureURI
FROM (picture LEFT JOIN clan ON picture.pictureID = clan.clanLogo OR clan.clanLogo IS NULL)
LEFT JOIN player ON clan.clanContact = player.playerID OR clan.clanLeader = player.playerID WHERE clan.clanID =  '$_GET[cID]';

Burde løse det...
Avatar billede Slettet bruger
10. januar 2004 - 21:21 #2
lige lidt for hurtig der....

noget i stil med nedenstående - burde gøre det!
$query = "SELECT clanName, clanDescription, playerHandle, playerHandle, clanHomepage, clanIrc, tag, tagType, pictureURI
FROM
player, clan LEFT JOIN picture.pictureID ON clan.clanLogo=picture.pictureID
WHERE (player.playerID=clan.clanContact OR clan.clanLeader) AND clan.clanID='".$_GET['cID']."'";
Avatar billede jinxit Nybegynder
10. januar 2004 - 22:04 #3
Definitionen af en LEFT JOIN er, at de 2 tabeller sammensmeltes når det boolske udtryk er sandt... til dette resultat tilføjes alle de records i den venstre tabel som ikke er blevet sammensmeltet med en record i den højre...

Prøv evt. at bruge en FULL OUTER JOIN (svarer til både LEFT JOIN og RIGHT JOIN)
Avatar billede pgm Nybegynder
11. januar 2004 - 02:15 #4
Hej!
tak for svarene... det var lidt en blanding af jeres svar der ledte hen til den rigtige:
$query = "SELECT clanName, clanDescription, playerHandle, playerHandle, clanHomepage, clanIrc, tag, tagType, pictureURI
FROM (picture RIGHT OUTER JOIN clan ON picture.pictureID = clan.clanLogo)
LEFT JOIN player ON clan.clanContact = player.playerID OR clan.clanLeader = player.playerID WHERE clan.clanID =  '$_GET[cID]'";

så i deles om pointne.
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