batzenlurch Geschrieben 3. März 2009 Teilen Geschrieben 3. März 2009 Hallo Forumgemeinde, Hoffe ihr könnt mir bei diesem Problem helfen (benutze (leider) MS Access 2003): 1.Tabelle[MIS_CU]: No, Stueckpreis 2.Tabelle[MIS_PC]: No, Staffelmenge, 'Wert der PreisPos' Ich möchte die 1.Tabelle updaten: mit der Summe aus den Preispositionen der niedrigsten Staffelmenge, gruppiert auf No und Staffelmenge Hier mein SQL: update MIS_CU set MIS_CU.CU_UP = ( SELECT Min(Preise.stck_preis) AS stck_preis FROM ( SELECT MIS_PC.PC_CU_No, Sum(MIS_PC.PC_Act) AS stck_preis FROM MIS_PC GROUP BY MIS_PC.PC_CU_No, MIS_PC.PC_QS ) AS Preise [B]WHERE MIS_CU.CU_NO = Preise.PC_CU_No[/B] GROUP BY Preise.PC_CU_No ); PS. Der Subselect funktioniert einwandfrei: SELECT Min(Preise.stck_preis) AS stck_preis FROM ( SELECT MIS_PC.PC_CU_No, Sum(MIS_PC.PC_Act) AS stck_preis FROM MIS_PC GROUP BY MIS_PC.PC_CU_No, MIS_PC.PC_QS ) AS Preise GROUP BY Preise.PC_CU_No Ich hoffe ich habe mich verständlich ausgedrückt. Danke für jeden Tipp. Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
batzenlurch Geschrieben 5. März 2009 Autor Teilen Geschrieben 5. März 2009 *push* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 5. März 2009 Teilen Geschrieben 5. März 2009 *push* - Tja....und was wäre denn deine Frage ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
batzenlurch Geschrieben 6. März 2009 Autor Teilen Geschrieben 6. März 2009 Die Frage ist: Warum funktioniert der Updatebefel nicht, obwohl der Select klappt? Hier mein Select: SELECT MIS_CU.*, (SELECT Min(Preise.stck_preis) AS stck_preis FROM ( SELECT MIS_PC.PC_CU_No, Sum(MIS_PC.PC_Act) AS stck_preis FROM MIS_PC GROUP BY MIS_PC.PC_CU_No, MIS_PC.PC_QS ) AS Preise WHERE MIS_CU.CU_NO = Preise.PC_CU_No GROUP BY Preise.PC_CU_No ) FROM MIS_CU Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 6. März 2009 Teilen Geschrieben 6. März 2009 Die Frage ist: Warum funktioniert der Updatebefel nicht, obwohl der Select klappt? Hier mein Select: SELECT MIS_CU.*, (SELECT Min(Preise.stck_preis) AS stck_preis FROM ( SELECT MIS_PC.PC_CU_No, Sum(MIS_PC.PC_Act) AS stck_preis FROM MIS_PC GROUP BY MIS_PC.PC_CU_No, MIS_PC.PC_QS ) AS Preise WHERE MIS_CU.CU_NO = Preise.PC_CU_No GROUP BY Preise.PC_CU_No ) FROM MIS_CU Gruß - Und welche Fehlermeldung kommt ? Wenn du hier Hilfe willst, musst du dein Problem schon etwas spezifischer Beschreiben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
batzenlurch Geschrieben 6. März 2009 Autor Teilen Geschrieben 6. März 2009 Der Select klappt wunderbar: Alle Spalten aus MIS_CU werden ausgegeben und noch die zusätzlich selektierte Spalte (Preis pro Stueck), welche beim Update in MIS_CU.CU_UP geschrieben werden soll. Soweit also alles bestens. Das Problem beginnt jetzt beim Updatebefehl. Wenn ich den SQL so ausführe: update MIS_CU set MIS_CU.CU_UP = ( SELECT Min(Preise.stck_preis) AS stck_preis FROM ( SELECT MIS_PC.PC_CU_No, Sum(MIS_PC.PC_Act) AS stck_preis FROM MIS_PC GROUP BY MIS_PC.PC_CU_No, MIS_PC.PC_QS ) AS Preise WHERE MIS_CU.CU_NO = Preise.PC_CU_No GROUP BY Preise.PC_CU_No ); ... fehlt meiner Meinung nach die Where-Klausel, in der ich sage, welche MIS_CU.CU_NO mit dem stck_preis geupdatet werden soll. Es erscheint die Fehlermeldung (liegt aber nicht an Zugriffsrechten): "Operation muss eine aktualisierbare Abfrage verwenden" Führe ich das ganze so aus: update MIS_CU set MIS_CU.CU_UP = ( SELECT Min(Preise.stck_preis) AS stck_preis FROM ( SELECT MIS_PC.PC_CU_No, Sum(MIS_PC.PC_Act) AS stck_preis FROM MIS_PC GROUP BY MIS_PC.PC_CU_No, MIS_PC.PC_QS ) AS Preise WHERE MIS_CU.CU_NO = Preise.PC_CU_No GROUP BY Preise.PC_CU_No ) [B]where MIS_CU.CU_NO = Preise.PC_CU_NO[/B] ... liegt Preise.PC_CU_NO außerhalb des Gültigkeitsbereiches. Der Update-String wär meiner Ansicht nach so korrekt: UPDATE MIS_CU SET MIS_CU.CU_UP = (SELECT MIN(Preis.stck_preis) AS stck_preis FROM (SELECT MIS_PC.PC_CU_No, SUM(MIS_PC.PC_Act) AS stck_preis FROM MIS_PC GROUP BY MIS_PC.PC_CU_No, MIS_PC.PC_QS ) AS Preis WHERE MIS_CU.CU_NO = Preis.PC_CU_No GROUP BY Preis.PC_CU_No ) WHERE MIS_CU.CU_NO IN (SELECT MIS_PC.PC_CU_No FROM MIS_PC GROUP BY MIS_PC.PC_CU_No ) Leider aber selbe Fehlermeldung: "Operation muss eine aktualisierbare Abfrage verwenden" Hat evtl. jemand einen Tipp? Schon mal recht herzlichen Dank für eure Bemühungen. Gruß, batze Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.