Mysql - Fehler in Abfrage?

mammuteffect

Mitglied
Hi, ich stehe gerade ziemlich ratlos vor einer Abfrage. Ich kriege ein leeres Ergebnis zurück, allerdings keinen Fehler. Müsste also ein logisches Problem sein. Hier mal die Abfrage:

PHP:
SELECT news.idnews, member.first_name, member.surname, member.idmember, section.name, team.shorttag, news.topic, news.text, news.date, news.link, news.link_name
FROM news, member, section, team
WHERE news.idmember=member.idmember AND news.idsection=section.idsection AND news.idteam=team.idteam
ORDER BY news.date DESC
Die Tabellen section und team sind leer, in Members gibt es einen Eintrag:

idmember= 1
first_name= Tralala
surname= lalala

und bei News folgenden:

idnews=1
idmember=1
idsection und idteam beide leer.

Ich denke das sind die relevanten Daten. Jetzt würde ich gern wissen, wo der Fehler ist.
 
Hmm, aber ich muss sie doch verknüpfen, sonst ist die Ausgabe bei mehreren Einträgen in News (wo dann auch mal idteam und idsection gefüllt ist) doch falsch.
 
Was dir hier helfen könnte, wäre evt. LEFT JOIN. Inwiefern das bei dir funktioniert, kann ich dir nicht sagen. Sprich, ob es die richtigen Ergebnisse ausspuckt oder fehlerhafte.

Ließ dich zu dem Thema mal ein.
 
Achso, demnach muss ich den Outer Join verwenden, weil der auch Datensätze ausgibt, die nicht in allen Tabellen vorkommen, ja?

Auf jeden Fall mal besten Dank!
 
So, habe es jetzt mal mit einem LEFT OUTER JOIN probiert:

PHP:
SELECT news.idnews, member.first_name, member.surname, member.idmember, section.name, team.shorttag, news.topic, news.text, news.date, news.link, news.link_name
FROM news LEFT OUTER JOIN (member, section, team) on (news.idmember=member.idmember AND section.idsection=news.idsection AND team.idteam=news.idteam)
ORDER BY news.date DESC
Mit $ergebnis[0][topic] komm ich an den Newstitel. $ergebnis[0][first_name] gibt allerdings nichts aus. Woran liegt das?
Und wieso geht nicht $ergebnis[0][news.topic] nicht?
 
Hi,

Du musst natürlich vor allem die Tabellen LEFT joinen, in denen es evtl keine passenden Datensätze gibt, natürlich einzeln.

Code:
SELECT news.idnews, 
   member.first_name, 
   ...
FROM news 
   LEFT JOIN member
      ON news.idmember=member.idmember
   LEFT JOIN section
      ON section.idsection=news.idsection
   LEFT JOIN team
      ON team.idteam=news.idteam
ORDER BY news.date DESC

LG
 
Zurück