Autor Beitrag
BLR
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Do 26.08.10 17:21 
Hallo, ich würde gerne für mein Programm aus 3 Join-Abfragen eine machen. Diese 3 Join-Abfragen funktionieren einzeln, also kann es eigentlich nicht an der DB-Aufbau liegen.
2 Joins habe ich bereits zusammengeführt aber bei der dritten habe ich irgendwie Probleme mit der Klammer (nehme ich an)

Abfrage über 3 Tabellen mit 2 Joins

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
select re_positionen.ID_Pos, rechnung.RechnungsNummer,
rechnung.Datum, artikel.Artikel_Bezeichnung
from (re_positionen
join rechnung on re_positionen.FK_RE_ID = rechnung.ID_RE
and rechnung.ID_RE = 3)
join artikel on artikel.ID_Art = re_positionen.FK_Art_ID
where artikel.ID_Art = 45


Nun Abfrage über 4 Tabellen mit 3 Joins
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
select re_positionen.ID_Pos, rechnung.RechnungsNummer,
rechnung.Datum, artikel.Artikel_Bezeichnung, kunde.Name, kunde.Vorname
from ((re_positionen
join rechnung on re_positionen.FK_RE_ID = rechnung.ID_RE
and rechnung.ID_RE = 3
rechnung join kunde on rechnung.FK_Kunde_ID = kunde.ID_Kunde)
join artikel on artikel.ID_Art = re_positionen.FK_Art_ID
where artikel.ID_Art = 45)
join kunde on rechnung.FK_Kunde_ID = kunde.ID_Kunde
and rechnung.FK_Kunde_ID = 4


Fehler: #1066 - Not unique table/alias: 'rechnung'

Ich nehme an, er hat Probleme mit 2 Zeilen:
ausblenden SQL-Anweisung
1:
join rechnung on re_positionen.FK_RE_ID = rechnung.ID_RE					

und
ausblenden SQL-Anweisung
1:
join kunde on rechnung.FK_Kunde_ID = kunde.ID_Kunde					


Ich habe die RechnungsID als Fremdschlüsse in der RE_Positionen
Und KundenID als Fremdschlüssel in der Tabelle Rechnung...
P.S fall die DB gebraucht wird, kann ich gern ein DB-Diagramm machen.
Danke für die Ratschläge :)
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Do 26.08.10 19:26 
Hi,

habe das ganze mal ausprobiert.

Also, in Deinem Statement ist 2x ein Join auf die Tabelle Kunde. Weiss nicht, ob das Absicht oder ein Versehen war, aber so funktioniert das nicht.
Habe es mal umgeschrieben, das ist das Ergebnis:

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
SELECT      
          re_positionen.ID_Pos, 
          rechnung.RechnungsNummer,
          rechnung.Datum, 
          artikel.Artikel_Bezeichnung, 
          kunde.Name,
          kunde.Vorname
FROM        
          re_positionen 
INNER JOIN  rechnung ON re_positionen.FK_RE_ID = rechnung.ID_RE AND rechnung.ID_RE = 3
INNER JOIN  artikel ON artikel.ID_Art = re_positionen.FK_Art_ID AND artikel.ID_Art = 45
INNER JOIN  kunde ON kunde.ID_Kunde = rechnung.FK_Kunde_ID AND rechnung.FK_Kunde_ID = 4;

oder übersichtlicher, so finde ich:
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
SELECT  
      re_positionen.ID_Pos, 
      rechnung.RechnungsNummer,
      rechnung.Datum, 
      artikel.Artikel_Bezeichnung, 
      kunde.Name,
      kunde.Vorname
FROM  
      re_positionen,
      rechnung,
      artikel,
      kunde
WHERE  
      re_positionen.FK_RE_ID = rechnung.ID_RE AND
      artikel.ID_Art = re_positionen.FK_Art_ID AND
      kunde.ID_Kunde = rechnung.FK_Kunde_ID AND
      rechnung.ID_RE = 3 AND
      artikel.ID_Art = 45 AND
      rechnung.FK_Kunde_ID = 4;


Kann sein, dass ich bei den Spaltenbezeichnern was verplant habe, da diese manchmal sehr komisch sind.

Viel Spaß damit,

Marko

Für diesen Beitrag haben gedankt: BLR
BLR Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Do 26.08.10 21:44 
ohh cool, danke, das war genau mein Fehler, hab da aus versehen was überflüssiges reingeschrieben
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Do 26.08.10 21:47 
Hab ich gern gemacht

Marko