PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abfrageproblem


tlang78
19.05.2009, 10:31:16
Hallo,

ich habe ein Problem mit meiner etwas umfangreichen Abfrage.

Tabellen: user, stat, projekte, monate

Ich benötige alle Einträge der Tabelle des angemeldeten UsersAND stat.STUID = '$myrow[UID]' Dies funktioniert genau wie es soll...

Mein Problem ist, dass ich alle Einträge benötige auch wenn keine Einträge in der Tabelle monate vorhanden sind! AND stat.STID = monate.MSTID

Hier meine komplette Abfrage:

$string = "
SELECT
user.UID,
user.UName,
user.UVorname,
projekte.PID,
projekte.PNr,
projekte.PBank,
projekte.PGs,
stat.STID,
stat.STUID,
stat.STPID,
stat.STBaustein,
stat.STHonorarProzent,
stat.STHonorarWert,
stat.STPotential,
stat.STAngebot,
stat.STAuftrag,
stat.STVerloren,
stat.STFakturiert,
monate.MID,
monate.MMonat,
monate.MJahr,
monate.MWert,
monate.MSTID ";
$string .= "FROM user, stat, projekte, monate ";
$string .= "WHERE stat.STUID = user.UID ";
$string .= "AND stat.STPID = projekte.PID ";
$string .= "AND stat.STUID = '$myrow[UID]' ";
$string .= "AND stat.STID = monate.MSTID ";
$string .= "AND stat.STStatus = 1 ";
$string .= "ORDER BY projekte.PBank, projekte.PGS, stat.STBaustein";

Crisps
19.05.2009, 11:31:48
Versuchs mal so:

SELECT stat.STID
, stat.STUID
, stat.STPID
, stat.STBaustein
, stat.STHonorarProzent
, stat.STHonorarWert
, stat.STPotential
, stat.STAngebot
, stat.STAuftrag
, stat.STVerloren
, stat.STFakturiert
, user.UID
, user.UName
, user.UVorname
, projekte.PID
, projekte.PNr
, projekte.PBank
, projekte.PGs
, monate.MID
, monate.MMonat
, monate.MJahr
, monate.MWert
, monate.MSTID
FROM stat
INNER
JOIN user
ON user.UID = stat.STUID
INNER
JOIN projekte
ON projekte.PID = stat.STPID
LEFT OUTER
JOIN monate
ON monate.MSTID = stat.STID
WHERE stat.STUID = '". $myrow['UID']. "' AND stat.STStatus = 1
ORDER
BY projekte.PBank, projekte.PGS, stat.STBaustein;

Die wichtigste Änderung ist hier der Left Join.

tlang78
19.05.2009, 13:22:42
Besten Dank hat geklappt! :)