Avatar billede beef12 Nybegynder
08. oktober 2004 - 09:31 Der er 5 kommentarer og
1 løsning

UPDATE sætning driller

Jeg har følgende mysql UPDATE sætning i min php-side. Men den fejler, men jeg kan bare ikke få øje på hvad der kunne være galt...



mysql_query("UPDATE tbl_item SET tbl_item.num_left = (SELECT (item2.num_left - tbl_ordre_items.amount)
                                        FROM tbl_ordre_items
                                        where
                                        tbl_ordre_items.ordre_id = '$ordre_id'
                                        and tbl_ordre_items.item_id = item2.item_id)
                FROM tbl_item as item2") or die(mysql_error());




tbl_ordre_items er en intersection tabel mellem tbl_item og tbl_ordre, og min tbl_item indeholder num_left, som er antallet af varer der er tilbage, imens amount i tbl_ordre_items er antallet af varer der bestilt. Dermed skal amount trækkes fra num_left på alle varer i en ordre.

Capice?
Avatar billede erikjacobsen Ekspert
08. oktober 2004 - 09:42 #1
Subselects understøttes måske ikke af din version af mysql ??
Avatar billede beef12 Nybegynder
08. oktober 2004 - 09:43 #2
jo - det skulle den gerne - jeg har da benyttet mig af det før. Men jeg undersøger det lige...
Avatar billede arne_v Ekspert
08. oktober 2004 - 09:43 #3
Ovenstående kræver MySQL 4.1.x
Avatar billede beef12 Nybegynder
08. oktober 2004 - 09:48 #4
aha - jeg bruger 4.0.14.... sikke noget crap.

Nogen sql-hajer der ved hvordan jeg kan omforme min query så det virker til min version eller er jeg tvunget til at lave en for-løkke i php??
Avatar billede arne_v Ekspert
08. oktober 2004 - 20:10 #5
Det er jeg lidt bange for.

Jeg kan ihvertfald ikke umiddelbart omskrive.
Avatar billede beef12 Nybegynder
08. oktober 2004 - 20:37 #6
sådan løses det, vha af lidt php-sjov :-)

sådan !!!!

Det her virker:

$result = mysql_query("SELECT (tbl_item.num_left - tbl_ordre_items.amount) AS a, tbl_item.item_id as b
FROM tbl_ordre_items, tbl_item
WHERE
tbl_ordre_items.ordre_id = '$ordre_id'
AND
tbl_ordre_items.item_id = tbl_item.item_id") or die(mysql_error());


while ($get = mysql_fetch_array($result)) {
$a = $get['a'];
$b = $get['b'];
mysql_query("UPDATE tbl_item SET tbl_item.num_left = '$a' where item_id = '$b'");
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester