ORACLE SQL-Abfragen

Bravemin

Benutzer
Beiträge
5
Hallo Zusammen,

ich habe eine Frage. Uns zwar habe ich zwei Aufgaben erhalten, bei dem es darum geht richtige SQL-Befehle einzugeben.

Bei Aufgabe b habe ich meine Probleme. Normalerweise müssten Bei Deutsche Bank und OTTO die Beträge um 50 % erhöht werden. Komischerweise findet keine Veränderung statt bzw. die Beträge bleiben gleich.

Könnt ihr mir dabei helfen ?
1271897.png


Lösung Aufgabe a)

SELECT * FROM Datatabelle e1

WHERE Betrag > (SELECT AVG (e2.Betrag) FROM Datatabelle e2)



Lösung Aufgabe b)

UPDATE DataTabelle

SET Betrag = Betrag * 1.15

WHERE Auftraggeber = 'Vattenfall';



UPDATE DataTabelle

SET Betrag = Betrag * 1.50

WHERE Auftraggeber = 'Otto'

AND Auftraggeber = 'Deutsche Bank';
 
Werbung:
a) schau Dir HAVING an
b) letztes Update: Stimmt folgende Aussage: "2 = 5"? Offenbar nicht. Kann also 'Otto' = Auftraggeber = 'Deutsche Bank' sein? Offenbar nicht. Ich schenke Dir ein OR.
 
OR................, ich hätte selbst drauf kommen müssen...
Having werde ich mir gleich anschauen, aber a müsste doch eigentlich richtig sein.
Ich bekomme zumindest die Ergebnisse richtig angezeigt.
Danke für die Hilfe
 
Alles klar, danke für den Hinweis
Ich hätte noch eine zusätzliche Frage. Könnte ich evtl. die Werte aus der Spalte "Ergebnis" in die Spalte "Letztes Ergebnis"
der anderen Tabelle hinzufügen ?
 
Bei mir werden die Zeilen aktualisiert, jedoch nichts angezeigt, also die Spalte "Letzter Betrag" bleibt unverändert. Müsste ich evtl. die DB komplett neu starten?
Das ganze habe ich über die Sub-SELECT versucht.

UPDATE DATATABELLE
SET letztesergebnis = (SELECT ergebnis
FROM stattabelle WHERE letztesergebnis = ergebnis);
 
das wird so nix...

Du mußt schon angeben, wie diese beiden Tabellen verbunden sind, das kann das DB-System leider nicht eraten. Also:

Code:
SELECT ergebnis FROM stattabelle WHERE letztesergebnis = ergebnis

kann so nicht gehen.

Code:
test=*# select * from data ;
 id | val
----+-----
  1 |   
  2 |   
  3 |   
  4 |   
(4 Zeilen)

test=*# select * from stat;
 id | val
----+-----
  1 |  10
  2 |  20
  3 |  30
  4 |  40
(4 Zeilen)

test=*# update data set val = stat.val from stat where data.id = stat.id;
UPDATE 4
test=*# select * from data ;
 id | val
----+-----
  1 |  10
  2 |  20
  3 |  30
  4 |  40
(4 Zeilen)

test=*#
 
Werbung:
Vielen Dank für den Hinweis,
Mit folgendem Befehl konnte ich die Werte in die Spalte eintragen:

UPDATE DATATABELLE
SET DATATABELLE.LETZTESERGEBNIS = (SELECT STATTABELLE.ERGEBNIS
FROM STATTABELLE
WHERE STATTABELLE.StatId = DATATABELLE.dataId);

Ich bedanke mich nochmal für die Kompetente Hilfe.
Grüße Bravemin
 
Zurück
Oben