Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Abfrage





Frage

hallo zusammen, ich schon wieder, ich habe folgende tabelle: Artikel Location QTY Blabla D 5 Blabla B 2 Blabla A 9 ich möchte jetzt mittels einer Abfrage folgende Tabelle erstellen Artikel QTY_D QTY_B QTYA Blabla 5 2 9 das geht natürlich über 4 Abfragen. Es handelt sich aber um ca 1000 Artikel und 11 Locationen. Weiß jemand Rat? Danke und Gruß babypet

Antwort 1 von lorf55

Hallo babypet,
ich finde den Weg über mehrere SELECT-Anweisungen ganz ok:
SELECT LocQTY.Artikel, 
(SELECT Sum(LocQTY.QTY)  FROM LocQTY WHERE (LocQTY.Location="d")) AS QTY_D,
(SELECT Sum(LocQTY.QTY)  FROM LocQTY WHERE (LocQTY.Location="b")) AS QTY_B, 
(SELECT Sum(LocQTY.QTY)  FROM LocQTY WHERE (LocQTY.Location="a")) AS QTY_A
FROM LocQTY
GROUP BY LocQTY.Artikel;

wobei LocQTY deine Tabelle bezeichnet.

Aber vielleicht findet ja jemand noch was anderes (obwohl ich es mir nicht vorstellen kann, weil man immer den Ärger mit den Aggregatfunktionen hat).

Gruß
lorf

Antwort 2 von babypet

Hi Iorf,

der Ansatz liest sich gut, allerdings wird zu jedem Arttikel nun die Gesamtsumme QTY aller vorhandenen Artikel angzeigt und nicht die tatsächliche QTY. Ein eperimentieren mit MAX und ErsterWert führte zu keinm Ergebnis. Vielleicht hast Du ja noch eine Idee.

Danke und Gruß
babypet

Antwort 3 von lorf55

Hallo babypet,
unter der Voraussetzung, dass in keiner Location doppelte QTYs auftreten, geht auch das:
SELECT DISTINCT LocQTY.Artikel, 
(SELECT L.QTY FROM LocQTY as L WHERE ( (L.Location="d") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_D, 
(SELECT L.QTY FROM LocQTY as L WHERE ( (L.Location="b") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_B,
(SELECT L.QTY FROM LocQTY as L WHERE ( (L.Location="a") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_A
FROM LocQTY;

Sonst gibts den Fehler, dass von einer Unterabfrage nur 1 Datensatz zurückgegeben werden kann.

Besser ist schon die Summen-Variante:
SELECT [LocQTY].[Artikel],
 (SELECT sum(L.QTY)  FROM LocQTY as L WHERE ( (L.Location="d") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_D,
 (SELECT sum(L.QTY)  FROM LocQTY as L WHERE ( (L.Location="b") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_B,
 (SELECT sum(L.QTY)  FROM LocQTY as L WHERE ( (L.Location="a") AND (L.Artikel= LocQTY.Artikel) )) AS QTY_A
FROM LocQTY
GROUP BY [LocQTY].[Artikel];

Die Abfrage aus AW1 ist falsch. Ich glaube, jetzt ist es besser.

Gruß
lorf

Antwort 4 von babypet

Hi Iorf

VOLL SUUUUUUUPER.
Es funzt undich bin Dir tausendmal dankbar

Gruß
babypet

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: