Verknüpfen einer 3. Tabelle

Meister_Knobi

Aktiver Benutzer
Beiträge
27
Guten Tag,

ich bin es leid jedes mal mit Excel und dem SVERWEIS noch im nachhinein zu arbeiten.

Ich habe diese 2 Abfragen:

Code:
Select 
   a.Artikelnr, 
   a.Arttext,
   a.EANCODE,
   p1.MATERIAL as EK
From 
   ARTIKEL a
   RIGHT JOIN PREISE p1 ON
   a.Artikelnr=p1.Artikelnr And
   p1.PREISLST="1"  
WHERE
   a.KZSperre not like "1" and
   (a.KZART = "0" or
   a.KZART = "3") 
Order By 
   ARTIKELNR;


Code:
Select 
   a.Artikelnr,
   p.MATERIAL as UVP   
From 
   ARTIKEL a
   RIGHT JOIN
   PREISE p
   ON
   a.Artikelnr
   =
   p.Artikelnr
WHERE
   p.PREISLST="1"
Order By 
   ARTIKELNR;

Die Ergebnisse verknüpfe ich dann mit SVERWEIS aneinander.

Mir gelingt es jedoch nicht diese sofot per SQL miteinander zu verbinden, wie ich es in der 1. Abfrage schon geschaft habe.

Code:
Select 
   a.Artikelnr,
   a.Arttext,
   a.EANCODE,
   p1.MATERIAL as EK,
   p2.MATERIAL as UVP
From 
   ARTIKEL a
   RIGHT JOIN PREISE p1 ON
   a.Artikelnr=p1.Artikelnr And
   p1.PREISLST="1" 
   RIGHT JOIN PREISE p2 ON
   a.Artikelnr=p2.Artikelnr And
   p1.PREISLST="20"
WHERE
   a.KZSperre not like "1"
Order By 
   ARTIKELNR;
Fehler Code kann ich leider nicht liefern, da diese Abfrage meine ganze WaWi zum Absturz bringt.
Wo liegt da mein Fehler?
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Hallo, ich würde im Order By mal die Artikelnummer mit der Tabelle angeben. D.h. a.Artikelnr - ansonsten sehe ich keinen offensichtlichen Fehler.
 
Ok, das a.ArtikelNr hat geholfen, jetzt bekomm ich wenigstens nen Fehler angezeigt. Zudem habe ich im 2. Right Join eine falsche Tabelle angegeben.

Code:
Select 
   a.Artikelnr,
   p1.MATERIAL as EK
   p2.MATERIAL as UVP
From 
   ARTIKEL a
   RIGHT JOIN PREISE p1 ON
   a.Artikelnr=p1.Artikelnr And
   p1.PREISLST="1" 
   RIGHT JOIN PREISE p2 ON
   a.Artikelnr=p2.Artikelnr And
   p2.PREISLST="20"
WHERE
   a.KZSperre not like "1"
Order By 
   a.ARTIKELNR;
Diese Abfrage spuckt mir jetzt diesen Fehler aus:

SQL-Fehler in Schritt 1:
TA_SQL.SelectQuery: Can't format message 13:896 -- message file \\ms-bl01\firebird.msg not found.
Token unknown - line 4, column 2.
P2.

Ich habe keine Ahnung woran das liegt.
 
Zuletzt bearbeitet von einem Moderator:
Ich denke mal das Problem liegt im RIGHT JOIN, bist du sicher das du nicht einen (bzw. zwei) LEFT JOINs brauchst?
 
Ich habe die JOINS schon mal durchgetauscht, kein ergebnis.
jetzt gibs was wichtigeres zu tun, dann muss excel halt wieder herhalten.


ich melde mich wenn ich in diesem Thema weiter kommen.
 
Guten Tag,...

Ich habe problem los meine Abfragen aus den Tabellen Artikel+Preise und Artikel+Umsätze mit einander verknüpft.

Code:
SELECT
   a.ARTIKELNR,
   a.ARTTEXT,
   a.KALKEK,
   sum( case when p.PREISLST=0 then p.MATERIAL else 0 end) as Preis00,
   ...
FROM
   ARTIKEL a
INNER JOIN
   PREISE p
ON
   a.ARTIKELNR=p.ARTIKELNR   
WHERE 
   a.KZSPERRE not like 1
GROUP BY
   a.ARTIKELNR,
   a.ARTTEXT,
   a.KALKEK
ORDER BY
   a.ARTIKELNR;

Und

Code:
SELECT
   a.ARTIKELNR,
   a.ARTTEXT,
   a.KALKEK,
   sum( case when au.JAHR=2011 then au.VKWERT1+au.VKWERT2 end) as Umsatz2011,
   ...
FROM
   ARTIKEL a
INNER JOIN
   ARUMSATZ au
ON
   a.ARTIKELNR=au.ARTIKELNR   
WHERE 
   a.KZSPERRE not like 1
GROUP BY
   a.ARTIKELNR,
   a.ARTTEXT,
   a.KALKEK
ORDER BY
   a.ARTIKELNR;

Wenn ich jedoch jetzt diese Beiden verbinden möchte erhalte ich Falsche Werte bei allen Agragat Funktionen. Auch andere JOIN-Typen machen das nicht richtig.
Code:
SELECT
   a.ARTIKELNR,
   a.ARTTEXT,
   a.KALKEK,
   sum( case when p.PREISLST=0 then p.MATERIAL else 0 end) as Preis00,
   ...
   sum( case when au.JAHR=2011 then au.VKWERT1+au.VKWERT2 end) as Umsatz2011, 
   ...
FROM       ARTIKEL a
LEFT JOIN     PREISE p     ON   a.ARTIKELNR=p.ARTIKELNR
LEFT JOIN     ARUMSATZ au     ON   a.ARTIKELNR=au.ARTIKELNR
WHERE 
   a.KZSPERRE not like 1
GROUP BY
   a.ARTIKELNR,
   a.ARTTEXT,
   a.KALKEK
ORDER BY
   a.ARTIKELNR;

Ich erhalte für jeden einzelnen Datensatz ein n-vielfaches als Ergebniss. Für jeden datensatz untersciedlich. ich habe Stichproben gemacht: ein mal 7fach ein mal 52fach ein mal 13fach. Und das bei allen Ergebnissen die durch eine Agregatfunktion erzeugt wurden.
 
Zuletzt bearbeitet von einem Moderator:

Ich erhalte für jeden einzelnen Datensatz ein n-vielfaches als Ergebniss. Für jeden datensatz untersciedlich. ich habe Stichproben gemacht: ein mal 7fach ein mal 52fach ein mal 13fach. Und das bei allen Ergebnissen die durch eine Agregatfunktion erzeugt wurden.

Zeig mal bitte die Definition der Tabellen und je 2-3 Datensätze, was rauskommt und was rauskommen sollte.
 
So sieht es aus:































3000​
Frosch Kuno m. Originalsound
1,269​
0​
9,87​
10,59​
8,34​
8,88​
9,87​
0​
0​
9,39​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
20,97​
19,47​
20,97​
1202,4​
3148,7​
495​
1296
3004​
Vollgummikeule mit Schleuderseil
1,188​
0​
11,07​
11,88​
9,69​
9,93​
11,07​
0​
0​
10,53​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
23,97​
20,97​
23,97​
416,79​
784,53​
153​
288
3005​
Snack Rugby 9,5cm zum Befüllen
0,876​
0​
8,07​
8,67​
7,26​
7,23​
8,07​
0​
0​
7,68​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
17,37​
14,97​
17,37​
840,42​
643,68​
423​
324​
































So soll es sein:































3000​
Frosch Kuno m. Originalsound
1,269​
0​
3,29​
3,53​
2,78​
2,96​
3,29​
0​
0​
3,13​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
6,99​
6,49​
6,99​
0​
133,6​
349,86​
0​
55​
144
3004​
Vollgummikeule mit Schleuderseil
1,188​
0​
3,69​
3,96​
3,23​
3,31​
3,69​
0​
0​
3,51​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
7,99​
6,99​
7,99​
0​
46,31​
87,17​
0​
17​
32
3005​
Snack Rugby 9,5cm zum Befüllen
0,876​
0​
2,69​
2,89​
2,42​
2,41​
2,69​
0​
0​
2,56​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
0​
5,79​
4,99​
5,79​
0​
93,38​
71,52​
0​
47​
36​
































Das erste erstellt mit einer Abfrage, das zweite aus zweiabfargen mit excel zusammen geflikt.
 
Ich weiß nicht warum er die Formatierung Sprengt. hier ein sauberes Bild

Nein, bitte kein Bild.

Deine Abfragen aus dem ersten Post und die zuletzt gezeigte sind komplett unterschiedlich. Bitte mach ein NACHVOLLZIEHBARES Beispiel.

Ich habe versucht, die Struktur der Tabellen zu erraten und die Abfrage aus dem ersten Posting nachzuvollziehen:

Code:
test=*# select * from artikel ;
 nr |  t  |  ean  | kzsperre | kzart
----+-----------+-------+----------+-------
  1 | artikel 1 | ean  | 0  | 1
  2 | artikel 2 | ean 2 | 0  | 1
(2 rows)

test=*# select * from preise ;
  material  | artnr | preislist
------------+-------+-----------
 material 1 |  1 | 20
 material 2 |  2 | 20
(2 rows)

test=*# select a.nr, a.t, a.ean, p1.material as ek, p2.material as uvp from artikel a right join preise p1 on a.nr=p1.artnr right join preise p2 on a.nr=p2.artnr and p1.preislist = '20' where a.kzsperre not like '1' order by a.nr;
 nr |  t  |  ean  |  ek  |  uvp
----+-----------+-------+------------+------------
  1 | artikel 1 | ean  | material 1 | material 1
  2 | artikel 2 | ean 2 | material 2 | material 2
(2 rows)

Ich weiß aber nicht, was Du in den Tabellen hast, erwartest und bekommst.
 
Werbung:
Irgendwie hat das Forum 2 meiner Threads einer von heute einer von gestern zusammen geführt. Eigentlich habe ich den 7. Post in einem andern Thread gepostet. Der alte link wird auch auf diesen Thread umgeleitet: https://www.datenbankforum.com/threads/falsche-ergebnisse-nach-verknuepfen-einer-3-tabelle.1941/


Also diese Abfrage:
SELECT
a.ARTIKELNR,
a.ARTTEXT,
a.KALKEK,
sum( case when p.PREISLST=0 then p.MATERIAL else 0 end) as Preis00,
{…},
sum( case when au.JAHR=2011 then au.VKWERT1+au.VKWERT2+au.VKWERT3+au.VKWERT4+au.VKWERT5+au.VKWERT6+au.VKWERT7+au.VKWERT8+au.VKWERT9+au.VKWERT10+au.VKWERT11+au.VKWERT12 end) as Umsatz2011,
{…}
FROM ARTIKEL a
LEFT JOIN PREISE p ON a.ARTIKELNR=p.ARTIKELNR
LEFT JOIN ARUMSATZ au ON a.ARTIKELNR=au.ARTIKELNR
WHERE
a.KZSPERRE not like 1
GROUP BY
a.ARTIKELNR,
a.ARTTEXT,
a.KALKEK
ORDER BY
a.ARTIKELNR;


erzeugt dieses Ergebnis:
03000 Frosch Kuno m. Originalsound 1,269 0 9,8710,59 8,34 8,889,870 0 9,390 0 0 0 0 0 0 0 0 0 0 20,97 19,47 20,97 1202,4 3148,74 495 1296


03004 Vollgummikeule mit Schleuderseil1,188 0 11,07 11,88 9,699,9311,07 0 0 10,53 0 0 0 0 0 0 0 0 0 0 0 23,97 20,97 23,97 416,79 784,53 153 288


03005 Snack Rugby 9,5cm zum Befüllen 0,876 0 8,078,677,26 7,238,070 0 7,680 0 0 0 0 0 0 0 0 0 0 17,37 14,97 17,37 840,42 643,68 423 324


Diese Daten sind aber nicht korrekt.

Die 2 Abfragen:
SELECT
a.ARTIKELNR,
a.ARTTEXT,
a.KALKEK,
sum( case when p.PREISLST=0 then p.MATERIAL else 0 end) as Preis00,
{…}
FROM
ARTIKEL a
INNER JOIN
PREISE p
ON
a.ARTIKELNR=p.ARTIKELNR
WHERE
a.KZSPERRE not like 1
GROUP BY
a.ARTIKELNR,
a.ARTTEXT,
a.KALKEK
ORDER BY
a.ARTIKELNR;


und:
SELECT
a.ARTIKELNR,
a.ARTTEXT,
a.KALKEK,
sum( case when au.JAHR=2011 then au.VKWERT1+au.VKWERT2+au.VKWERT3+au.VKWERT4+au.VKWERT5+au.VKWERT6+au.VKWERT7+au.VKWERT8+au.VKWERT9+au.VKWERT10+au.VKWERT11+au.VKWERT12 end) as Umsatz2011,
{…}
FROM
ARTIKEL a
INNER JOIN
ARUMSATZ au
ON
a.ARTIKELNR=au.ARTIKELNR
WHERE
a.KZSPERRE not like 1
GROUP BY
a.ARTIKELNR,
a.ARTTEXT,
a.KALKEK

ORDER BY
a.ARTIKELNR;


mit Excel zusammen geschustert ergeben:
03000 Frosch Kuno m. Originalsound 1,269 0 3,29 3,53 2,78 2,96 3,29 0 0 3,13 0 0 0 0 0 0 0 0 0 0 0 6,99 6,49 6,99 0 133,6 349,86 0 55 144


03004 Vollgummikeule mit Schleuderseil 1,188 0 3,69 3,96 3,23 3,31 3,69 0 0 3,51 0 0 0 0 0 0 0 0 0 0 0 7,99 6,99 7,99 0 46,31 87,17 0 17 32


03005 Snack Rugby 9,5cm zum Befüllen 0,876 0 2,69 2,89 2,42 2,41 2,69 0 0 2,56 0 0 0 0 0 0 0 0 0 0 0 5,79 4,99 5,79 0 93,38 71,52 0 47 36



Die „{…}” sind Codezeilen die ich rausgenommen habe, da sich dort der Code exakt wiederholt, nu rein Index steigert sich von Zeile zu Zeile. Ich weiß nicht wie ich die Ausgaben Formatiren soll, deswegen das Bild
 
Zurück
Oben