Hallo!
Bekomme die Fehlermeldung "Höchstens 1 Datensatz kann von dieser Unterabfrage zurückgegeben werden" unter Access 2000.
Wenn kein Datensatz, oder nur 1 Datensatz zurückgeliefert wird von der Unterabfrage, dann kommt keine Fehlermeldung, alles läuft.
Die Einzelabfragen für sich laufen wie gewünscht, nur nach dem zusammensetzen klappt es nicht mehr.
<pre>
SELECT R1.ID, R1.Name
FROM Rezepturen AS R1
WHERE R1.Version=
(SELECT Max(R2.Version)
FROM Rezepturen as R2
WHERE (R1.PreID=R2.PreID) AND (R2.ID=
(SELECT Rezepturen.ID
FROM Rezepturen INNER JOIN (Layers INNER JOIN LayerItems ON Layers.LayerID = LayerItems.LayerID) ON Rezepturen.ID = Layers.RezeptID
WHERE (LayerItems.RasinID=[@RasinID]) AND (Rezepturen.ProduktionOK=True))
)
);
</pre>
Habe den SQL mal etwas auseinandergezogen für Lesbarkeit. Probleme macht die letzte Unterabfrage, die allein für sich die richtigen Datensätze rauswirft.
Mir raucht der Kopf, eigentlich sollte das doch klappen?!?
Im Klartext sollen die RezeptIDs rausgegeben werden, die die höchste Versionsnummer einer GruppenID (PreID) besitzen und ein bestimmtes Teil (RasinID) innerhalb der (gejointen) Teileliste besitzen, sowie auch noch für die Produktion freigegeben.
Was bedeutet die Fehlermeldung? Wieso kann der erste SQL-Teil nur einen DS verarbeiten? Kann irgendwer helfen?
Gruss
Nils
Bekomme die Fehlermeldung "Höchstens 1 Datensatz kann von dieser Unterabfrage zurückgegeben werden" unter Access 2000.
Wenn kein Datensatz, oder nur 1 Datensatz zurückgeliefert wird von der Unterabfrage, dann kommt keine Fehlermeldung, alles läuft.
Die Einzelabfragen für sich laufen wie gewünscht, nur nach dem zusammensetzen klappt es nicht mehr.
<pre>
SELECT R1.ID, R1.Name
FROM Rezepturen AS R1
WHERE R1.Version=
(SELECT Max(R2.Version)
FROM Rezepturen as R2
WHERE (R1.PreID=R2.PreID) AND (R2.ID=
(SELECT Rezepturen.ID
FROM Rezepturen INNER JOIN (Layers INNER JOIN LayerItems ON Layers.LayerID = LayerItems.LayerID) ON Rezepturen.ID = Layers.RezeptID
WHERE (LayerItems.RasinID=[@RasinID]) AND (Rezepturen.ProduktionOK=True))
)
);
</pre>
Habe den SQL mal etwas auseinandergezogen für Lesbarkeit. Probleme macht die letzte Unterabfrage, die allein für sich die richtigen Datensätze rauswirft.
Mir raucht der Kopf, eigentlich sollte das doch klappen?!?
Im Klartext sollen die RezeptIDs rausgegeben werden, die die höchste Versionsnummer einer GruppenID (PreID) besitzen und ein bestimmtes Teil (RasinID) innerhalb der (gejointen) Teileliste besitzen, sowie auch noch für die Produktion freigegeben.
Was bedeutet die Fehlermeldung? Wieso kann der erste SQL-Teil nur einen DS verarbeiten? Kann irgendwer helfen?
Gruss
Nils
Comment