theonlyone
Goto Top

MySQL rechnen nach insert

Hallo zusammen,

ich versuche gerade eine SQL Query zu schreiben, komme aber nicht weiter.


  if($_POST['ACTION'] == "buchung_hinzufuegen")  
	{
   header('Content-Type: application/json');  
   $kunden_id = $_POST['KUNDEN_ID'];  
   $e_preis = $POST['PREIS'];  
   $p_id = $_POST['P_ID'];  
   $menge = $_POST['MENGE'];  
		
		$sql = "INSERT INTO orders(k_id, p_id, menge, e_preis) VALUES(:kunden_id, :p_id, :menge, :e_preis)";  
		$stmt = $dbh->prepare($sql);
		$stmt->bindParam(':kunden_id', $kunden_id);  
 	  $stmt->bindParam(':e_preis', $e_preis);  
		$stmt->bindParam(':p_id', $p_id);  
		$stmt->bindParam(':menge', $menge);  
		$stmt->execute();
   
    echo json_encode(array("success" => true,"msg" => "Buchung war erfolgreich"));  
	}

Vom Prinzip her ist das ganze ein Warenkorb der dann gebucht werden kann.
Ich bekomme zwar den Einzelpreis ($e_preis) und die Menge ($menge) übertragen. Nun möchte ich aber noch
die Spalte (g_preis) befüllen lassen. Sprich eine simple Rechnung e_preis * menge.

Nur habe ich gerade ein Brett vor dem Kopf wie ich das in die SQL Query einbauen kann.
Ich muss ja praktisch erst die Daten e_preis und menge in die Datenbank einspielen bevor ich damit rechnen kann.

Wie stelle ich das am blödsten an?

Content-Key: 621883

Url: https://administrator.de/contentid/621883

Printed on: April 18, 2024 at 23:04 o'clock

Member: BirdyB
BirdyB Nov 13, 2020 at 11:51:32 (UTC)
Goto Top
Moin,
entweder rechnest du vorher in PHP oder du erstellst einen Trigger der das nach dem
Insert automatisch erledigt.

VG
Member: manuel-r
manuel-r Nov 13, 2020 updated at 12:33:26 (UTC)
Goto Top
Das sollte doch eigentlich mit
INSERT INTO tabelle1 (feldname1) VALUES (wert1 * wert2);
funktionieren?!

Manuel
Member: akretschmer
akretschmer Nov 13, 2020 at 16:23:03 (UTC)
Goto Top
easy...

test=*# create table the_only_one (id int primary key, menge int, epreis int, gpreis int generated always as (menge * epreis) stored); 
CREATE TABLE
est=*# insert into the_only_one (id, menge, epreis) values (1, 5, 12);
INSERT 0 1
test=*# insert into the_only_one (id, menge, epreis) values (2,7,42);
INSERT 0 1
test=*# select * from the_only_one ;
 id | menge | epreis | gpreis 
----+-------+--------+--------
  1 |     5 |     12 |     60
  2 |     7 |     42 |    294
(2 rows)

test=*# 

davon abgesehen daß man das auch beim Select später rechnen kann, dieser Weg hier ist eher was wenn die Berechnung komplex ist und nicht beim Select erfolgen soll, aus performance-Gründen ...