Einzelnen Beitrag anzeigen
  #1  
Alt 13.11.2006, 10:10:51
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
4 Tabellen verknüpfen - INNER, OUTER und LEFT Join

Bin mal wieder an meine Grenzen gestoßen.
Kann ich folgende Abfragen noch verknüpfen, für eine gemeinsame Ergebnisliste, oder muss ich doch die Tabellen umbauen?

Abfrage 1:
PHP-Code:
$result mysql_query("SELECT * FROM BP_DB INNER JOIN Ort_DB ON BP_DB.cnt = Ort_DB.cnt LEFT OUTER JOIN OG_DB ON BP_DB.OG_Nr = OG_DB.OG_Nr 
WHERE ... GROUP BY BP_DB.NR"
) or die(mysql_error()); 
Abfrage2:
PHP-Code:
$result mysql_query("SELECT * FROM BP_DB, BP_DB_OA LEFT OUTER JOIN OG_DB ON BP_DB.OG_Nr = OG_DB.OG_Nr LEFT JOIN Ort_DB ON BP_DB_OA.cnt = Ort_DB.cnt 
WHERE ... Identisch mit Abfrage 1 + BP_DB_OA.Level in (0) GROUP BY BP_DB.NR"
) or die(mysql_error()); 
Die Tabellen:
BP_DB - Hauptabelle mit allen NR - Tabelle ist ohne Level
| NR (prim-key) | Datum | Beschreibung | cnt | OG_NR |
| 2136 | 21-9-2006 | ist nette | 2 | 0012 |
| 1256 | 10-10-2005 | nicht schlecht | 3 | 0015 |
| 0123 | 01-01-2004 | warum nicht a.. | 4 | 0020 |

Ort_DB - Tabelle für die Ortsangabe
| cnt (Prim-key) | ORT |
| 1 | Bremen |
| 2 | Berlin |
| 3 | Hamburg |
| 4 | Hannover |
| 5 | München |

BP_DB_OA - Tabelle mit Datensätzen hier entsprechend dem LEVEL=0. Ist Level=0 so soll der DS mit ausgegeben werden.
| NR | Level | cnt | (Tabelle ist ohne prim-Key)
| 2136 | 1 | 5 |
| 2136 | 2 | 2|
| 1256 | 0 | 3 |
| 0123 | 0 | 4 |
| 2136 | 1 | 2 |
| 2136 | 2 | 3 |


OG_DB - Wird hier eine Übereinstimmung gefunden, zur Haupttabelle BP_DB, so erhält der DS eine Sperre - Tabelle ist ohne Level
| OG_NR (Prim-key) | NR | cnt |
| 0015 | 2136 | 2 |
| 0016 | 0123 | 4 |
| 0017 | 1244 | 3 |
| 0018 | 2222 | 4 |

cu,
Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
Mit Zitat antworten