Einzelnen Beitrag anzeigen

Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem mit aufeinanderfolgenden OUTER JOINs in MySQL

  Alt 11. Jun 2006, 00:15
Datenbank: MySQL • Version: 4 • Zugriff über: irrelevant
Hallo!

Ich habe folgendes MySQL-Problem:

Ich habe eine Tabelle namens page_series_main, welche eine 1:1 Beziehung zu 5 anderen Tabellen hat.
Da nicht in allen dieser 5 Tabellen pro Eintrag eine Beziehung bestehen muss, habe ich mich für OUTER LEFT JOINs entschieden. Jedoch habe ich da noch ein kleines Problem. Hier mal meine Abfrage:
SQL-Code:
SELECT sm.serie_id AS id, serie_title AS title, serie_image AS image, count(cp.serie_id) AS charguide,
   serie_author AS author, serie_author_gender AS author_gender, count(sp.serie_id ) AS story,
   count(ep.serie_id) AS epiguide, count(op.serie_id) AS opening, count(ssp.serie_id) AS syncspeaker,
   count(mp.serie_id) AS manga
FROM page_series_main sm
   NATURAL LEFT OUTER JOIN page_charguide_items cp
   NATURAL LEFT OUTER JOIN page_story_pages sp
   NATURAL LEFT OUTER JOIN page_epiguide_pages ep
   NATURAL LEFT OUTER JOIN page_opening_pages op
   NATURAL LEFT OUTER JOIN page_syncspeaker_pages ssp
   NATURAL LEFT OUTER JOIN page_manga_pages mp
WHERE sm.serie_id = 1
   AND serie_visible != 0
GROUP BY sm.serie_id
LIMIT 1;
Angenommen in page_manga_pages gibt es keinen zugehörigen Eintrag, dann läuft alles so wie es soll. Wenn es jedoch z. B. in page_epiguide_pages keinen zugehörigen Eintrag gibt, gibt es ein Problem und zwar werden dann weder page_opening_pages, page_opening_pages, page_syncspeaker_pages noch page_manga_pages auf einträge geprüft ("geJOINt"). Es erscheint mir logisch wieso das so ist (liegt ja klarerweise am LEFT JOIN), aber wie kann ich das unterbinden?
Habe schon an einen FULL OUTER JOIN gedacht (heißt nicht, dass dieser das erzielt was ich will, wäre lediglich ein Versuch gewesen), aber den gibt es in MySQL leider nicht.

Wäre für jeden Tipp froh.
Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat