2010-12-09 9 views
0

ich diesenSQL-Update und legen

UPDATE CATALOGUE 
SET CATALOGUE.NUMBERINSTOCK=NUMBERINSTOCK-1 
WHERE CATALOGUE.ITEMID =(SELECT ALBUM.ALBUM_ID 
         FROM ALBUM 
         WHERE ALBUM.TITLE = '20 People in a Field' 
           AND IS_DISTRIBUTED_AS ='c') 

und diese

INSERT INTO ORDERELEMENT VALUES (1,10,12,17) 

wenn dies tun möchte, ist wahr

(SELECT NUMBERINSTOCK 
FROM CATALOGUE 
WHERE CATALOGUE.ITEMID =(SELECT ALBUM.ALBUM_ID 
          FROM ALBUM 
          WHERE ALBUM.TITLE = '20 People in a Field' 
            AND IS_DISTRIBUTED_AS ='c')) > 0 

Ich habe das Problem ist das Finden, wie eine bedingte zu tun Anweisung in einer SQL-Abfrage und auch, wie ein Update durchgeführt und als Teil einer Abfrage eingefügt wird.

Ich muss alle diese Dinge als eine Abfrage tun.

+0

Warum in einer einzigen Abfrage? –

+0

Ich mache einen Datenbankkurs und das ist Teil einer der Fragen Ich fand den Rest in Ordnung, aber jede Art, wie ich dieses Problem versuche ich bekomme Fehler :( – hactf

+0

Welche Version von SQL? – cjk

Antwort

0

Sie können keine Tabelle aktualisieren und in einer anderen Anweisung in eine andere Tabelle einfügen. Es ist möglich, ein UPDATE bedingt durchzuführen, wenn Sie eine WHERE-Klausel angeben. Sie können dasselbe mit einfügen (die Details sind abhängig von dbms).

Sie können jedoch eine gespeicherte Prozedur erstellen, die Ihre bedingte Logik enthält. Der Aufruf dieser Prozedur könnte als "eine" Aussage zählen?

+0

In PostgreSQL Sie * Kann * eine Tabelle aktualisieren und in eine einzelne Anweisung einfügen.Es heißt "Writeable CTE" und ich denke, dass SQL Server dies auch unterstützt. –

Verwandte Themen