Avatar billede jacobs12 Nybegynder
26. marts 2011 - 16:47 Der er 6 kommentarer og
1 løsning

MySQL Flere LEFT JOIN i samme sætning..

Hej.
Jeg har et lige mysql spørgsmål. Håber der er nogle der kan hjælpe.

Det jeg gerne vil have min SQL sætning til er.
At finde alle Organization der findes i tabellerne

PeopleInvolved
Project

Tabellen PeopleInvolved har en celle der hedder ProjectID og OrganizationID

Tabellen Project har en celle der hedder ID og OrganizationID
Jeg tror selv det er denne her snippet der ikke virker.

"LEFT JOIN Organization as org ON Project.OrganizationID = org .ID "

jeg bliver nød til at sætte "as org" på ellers fejler siden :(


$queryjoinCompaniesInvolved ="SELECT PeopleInvolved.ProjectID,Organization.Name as oName,Organization.ImageLarge,Organization.Industry FROM Project ".
"LEFT JOIN PeopleInvolved ON PeopleInvolved.ProjectID = Project.ID ".
"LEFT JOIN Organization as org ON Project.OrganizationID = org .ID ".
"LEFT JOIN Organization ON PeopleInvolved.OrganizationID = Organization.ID ".
"WHERE (Project.ID='$projectID') ";   

$resultjoinCompaniesInvolved = mysql_query($queryjoinCompaniesInvolved) or die(mysql_error());

På forhånd tak :)
26. marts 2011 - 17:24 #1
Det er ikke helt nemt at foelge dig.  Lad mig fortaelle med mine egne ord hvad jeg forstaar.  Saa kan du rette mig hvis det er forkert.

Du har (mindst) tre tabeller med (mindst) de foelgende felter ('celler')

PeopleInvolved
ProjectId, OrganizationID

Project
ID, OrganizationID

Organization
ID, Name, ImageLarge, Industry

Tabellerne haenger sammen saaledes:

PeopleInvolved.OrganizationID = Organization.ID og
Project.OrganizationID = Organization.ID og
PeopleInvolved.ProjectID = Project.ID

Du vil saa have organisations-navnene paa de organisationer der er der er involveret i et bestemt project med Project.ID = $projectID.

Er det korrekt forstaaet?

Hvis ja, saa behoever du ikke at bruge tabellen PeopleInvolved fordi Project allerede har en OrganizationID.  Saa skulle du kunne faa organisationsnavnene udskrevet med denne forenklede query:

SELECT org.Name FROM Project p JOIN Organisation org ON p.OrganizationID = org.OrganizationID WHERE p.ID = '$projectID'

$query = "SELECT org.Name FROM Project p JOIN Organisation org ON p.OrganizationID = org.OrganizationID WHERE p.ID = '$projectID'";

$result = mysql_query($query)or die(mysql_error());

while($row = mysql_fetch_array($result)) echo $row['Name'] . "<br>";
26. marts 2011 - 17:27 #2
Jeg kom for skade at skrive queryen to gange.  Den kode jeg vil foreslaa (hvis jeg har forstaaet dig rigtigt) er denne:

$query = "SELECT org.Name FROM Project p JOIN Organisation org ON p.OrganizationID = org.OrganizationID WHERE p.ID = '$projectID'";

$result = mysql_query($query)or die(mysql_error());

while($row = mysql_fetch_array($result)) echo $row['Name'] . "<br>";
Avatar billede erikjacobsen Ekspert
26. marts 2011 - 18:00 #3
Jeg har kun skimmet spørgerens spørgsmål, men det ligner lidt at han bør dele den op i 2 separate SELECTs, som så efterfølgende evt. kan kombineres med en UNION.
26. marts 2011 - 19:16 #4
erikjacobsen, ja, der er ikke rigtig overensstemmelse mellem problembeskrivelsen og koden.  Derfor foreslog jeg en omdefinering af problemet og en loesning der svarede dertil.  Det er taenkeligt at jeg forstod problemet forkert, saa der skal en anden loesning til (maaske med UNION, som du siger.)  Jeg venter paa feedback fra spoergeren.
Avatar billede jacobs12 Nybegynder
26. marts 2011 - 21:05 #5
Mange tak for jeres gode svar, jeg må nok lige tænke det igennem igen. Kan I lægge et svar så får i pointerne :)
26. marts 2011 - 21:10 #6
Svar fra mig.
Avatar billede erikjacobsen Ekspert
26. marts 2011 - 21:18 #7
Ingen point til mig, tak.
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

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



Seneste spørgsmål Seneste aktivitet
35 min siden opkaldside Af hagbartm i Mobiltelefoner
I dag 16:05 win 10 vil ikke boote Af bb69 i Windows
I dag 11:20 Lenovo x390 Af tobberjas i PC
I dag 10:14 Alder i Excel Af Nanarsi i Excel
I dag 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel