Akku
03-05-06, 11:39
Hallo Leute,
folgendes Problem wurde an mich heran getragen, konnte aber keine Erklärung dafür finden.
CREATE VIEW qtemp/abc AS SELECT DISTINCT
f2prod, f2fmg1, f2fmg2, f2fmg3, f2fmg4, f2fme1, f2fme2, f2fme3,
f2fme4, f2vkme, f2mein, f2mge1, f2mei1, f2mge2, f2mei2, f2mge3,
f2mei3, f2mge4, f2mei4,
DEC( (SELECT SUM(nemge0) FROM mne
WHERE nephas = '1' AND nestat = '1' AND neprod = a.f2prod
AND nelort = a.f2lort AND nemge1 = a.f2fmg1
AND nemge2 = a.f2fmg2 AND nemge3 = a.f2fmg3
AND nemge4 = a.f2fmg4), 15, 2) AS lbestand,
DEC( (SELECT SUM(jhbdmg - jhgymg) FROM pjhm1
WHERE jhvbnr = a.f2prod AND jhlort = a.f2lort
AND jhfmg1 = a.f2fmg1 AND jhfmg2 = a.f2fmg2
AND jhfmg3 = a.f2fmg3 AND jhfmg4 = a.f2fmg4), 15, 2)
AS abgang
FROM pf2m1 a WHERE f2kate = 'CRD' and f2prod = '11050'
1. Bei einfachem Aufruf (ohne Satznr.) : SELECT * FROM abc -> 3 Sätze
Produkt| F-Mge1| F-Mge2| Menge-3|ME3|Menge-4|ME4|LBest.|ABGANG
11050 | 42,000 | 80,000| 130,000|DM | 45,000|FLG| ---- | ----
11050 |152,000 |120,000| 130,000|DM | 45,000|FLG| ---- | ----
11050 |202,000 |120,000| 130,000|DM | 45,000|FLG| ---- | ----
******** Datenende ********
2. mit Satznummer: SELECT RRN(abc), abc.* FROM abc -> 3 Sätze (wie oben)
RRN|Produkt|F-Mge1 |F-Mge2
618| 11050 | 42,000| 80,000
608| 11050 |152,000|120,000
603| 11050 |202,000|120,000
Füge ich obiger View noch ein weiteres Feld hinzu, welches aus einer 3. Datei summiert wird:
, DEC( (SELECT SUM(vo3011) FROM vo3m1
WHERE vo3026 <> 'END' AND vo3092 <> 'J' AND vo3008 = a.f2prod
AND vo3041 = a.f2fmg1 AND vo3042 = a.f2fmg2
AND vo3039 = a.f2fmg3 AND vo3040 = a.f2fmg4), 15, 2) AS zugang
und rufe obige Selects auf, erhalte ich
1. ohne Satznummer: wie oben -> 3 Sätze
2. mit Satznummer : siehe unten
RRN |Produkt| F-Mge1| F-Mge2|LBest.|ABGANG|ZUGANG
603 | 11050 |202,000|120,000| ---- | ---- | ----
604 | 11050 |202,000|120,000| ---- | ---- | ----
605 | 11050 |202,000|120,000| ---- | ---- | ----
608 | 11050 |152,000|120,000| ---- | ---- | ----
609 | 11050 |152,000|120,000| ---- | ---- | ----
610 | 11050 |152,000|120,000| ---- | ---- | ----
618 | 11050 | 42,000| 80,000| ---- | ---- | ----
620 | 11050 | 42,000| 80,000| ---- | ---- | ----
Dies sind alle Sätze aus der Basis-Datei, die vorher durch das DISTINCT zusammengelegt wurden. Letzteres Resultat finde ich eigentlich gar nicht so verwunderlich. Was mich irritiert, sind die Abfragen, die nur 3 Sätze bringen. Sogar incl. einer konkreten Satznummer (in allen Fällen übrigens niedrigste Satznr.), obwohl ja auch hier bereits mehrere Sätze zusammengeflossen sind. Ist das lediglich Zufall?
Wieso reagiert die View-Abfrage mit Satznummer plötzlich unterschiedlich, nachdem die 3. Dateisumme dazugekommen ist?
Vielleicht liegt es ja auch einfach daran, dass im DISTINCT-Fall eine Satznummer eigentlich keinen Sinn macht und SQL deshalb nicht so recht damit umgehen kann?!
Für eine Erklärung wäre ich Euch sehr dankbar.
Viele Grüße, Akku
folgendes Problem wurde an mich heran getragen, konnte aber keine Erklärung dafür finden.
CREATE VIEW qtemp/abc AS SELECT DISTINCT
f2prod, f2fmg1, f2fmg2, f2fmg3, f2fmg4, f2fme1, f2fme2, f2fme3,
f2fme4, f2vkme, f2mein, f2mge1, f2mei1, f2mge2, f2mei2, f2mge3,
f2mei3, f2mge4, f2mei4,
DEC( (SELECT SUM(nemge0) FROM mne
WHERE nephas = '1' AND nestat = '1' AND neprod = a.f2prod
AND nelort = a.f2lort AND nemge1 = a.f2fmg1
AND nemge2 = a.f2fmg2 AND nemge3 = a.f2fmg3
AND nemge4 = a.f2fmg4), 15, 2) AS lbestand,
DEC( (SELECT SUM(jhbdmg - jhgymg) FROM pjhm1
WHERE jhvbnr = a.f2prod AND jhlort = a.f2lort
AND jhfmg1 = a.f2fmg1 AND jhfmg2 = a.f2fmg2
AND jhfmg3 = a.f2fmg3 AND jhfmg4 = a.f2fmg4), 15, 2)
AS abgang
FROM pf2m1 a WHERE f2kate = 'CRD' and f2prod = '11050'
1. Bei einfachem Aufruf (ohne Satznr.) : SELECT * FROM abc -> 3 Sätze
Produkt| F-Mge1| F-Mge2| Menge-3|ME3|Menge-4|ME4|LBest.|ABGANG
11050 | 42,000 | 80,000| 130,000|DM | 45,000|FLG| ---- | ----
11050 |152,000 |120,000| 130,000|DM | 45,000|FLG| ---- | ----
11050 |202,000 |120,000| 130,000|DM | 45,000|FLG| ---- | ----
******** Datenende ********
2. mit Satznummer: SELECT RRN(abc), abc.* FROM abc -> 3 Sätze (wie oben)
RRN|Produkt|F-Mge1 |F-Mge2
618| 11050 | 42,000| 80,000
608| 11050 |152,000|120,000
603| 11050 |202,000|120,000
Füge ich obiger View noch ein weiteres Feld hinzu, welches aus einer 3. Datei summiert wird:
, DEC( (SELECT SUM(vo3011) FROM vo3m1
WHERE vo3026 <> 'END' AND vo3092 <> 'J' AND vo3008 = a.f2prod
AND vo3041 = a.f2fmg1 AND vo3042 = a.f2fmg2
AND vo3039 = a.f2fmg3 AND vo3040 = a.f2fmg4), 15, 2) AS zugang
und rufe obige Selects auf, erhalte ich
1. ohne Satznummer: wie oben -> 3 Sätze
2. mit Satznummer : siehe unten
RRN |Produkt| F-Mge1| F-Mge2|LBest.|ABGANG|ZUGANG
603 | 11050 |202,000|120,000| ---- | ---- | ----
604 | 11050 |202,000|120,000| ---- | ---- | ----
605 | 11050 |202,000|120,000| ---- | ---- | ----
608 | 11050 |152,000|120,000| ---- | ---- | ----
609 | 11050 |152,000|120,000| ---- | ---- | ----
610 | 11050 |152,000|120,000| ---- | ---- | ----
618 | 11050 | 42,000| 80,000| ---- | ---- | ----
620 | 11050 | 42,000| 80,000| ---- | ---- | ----
Dies sind alle Sätze aus der Basis-Datei, die vorher durch das DISTINCT zusammengelegt wurden. Letzteres Resultat finde ich eigentlich gar nicht so verwunderlich. Was mich irritiert, sind die Abfragen, die nur 3 Sätze bringen. Sogar incl. einer konkreten Satznummer (in allen Fällen übrigens niedrigste Satznr.), obwohl ja auch hier bereits mehrere Sätze zusammengeflossen sind. Ist das lediglich Zufall?
Wieso reagiert die View-Abfrage mit Satznummer plötzlich unterschiedlich, nachdem die 3. Dateisumme dazugekommen ist?
Vielleicht liegt es ja auch einfach daran, dass im DISTINCT-Fall eine Satznummer eigentlich keinen Sinn macht und SQL deshalb nicht so recht damit umgehen kann?!
Für eine Erklärung wäre ich Euch sehr dankbar.
Viele Grüße, Akku