문제

I've prepared sql query like this

UPDATE Towar
JOIN TowarZamowienie ON Towar.Tow_id = TowarZamowienie.Tow_id
SET Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED);

and it returns me Modified records: 0. I will admit that I've got records in database

Here are my tables:

TowarZamowienie 

1   TowZam_id         int(19) AUTO_INCREMENT   
2   Tow_id            int(255)            
3   Zam_id            int(255)             
4   TowZam_ilosc      varchar(10)

Towar

1     Tow_id           int(255)
2     Tow_ilosc        int(6)  

Here is my schema http://sqlfiddle.com/#!2/981b4/1

도움이 되었습니까?

해결책

i guess you making wrong in the ON clause

try this

    ON Towar.Tow_id = TowarZamowienie.TowZam_id

DEMO

다른 팁

Why not "cast" the Integer to Varchar? What if the Varchar has really 10 chars and the Integer will expect just 6 numbers? Try this:

CAST(Tow_ilosc as CHAR(10))

or

CONVERT(Tow_ilosc, CHAR(10))

or just use like in the where clause

WHERE Tow_ilosc LIKE TowZam_ilosc

(I don't like like)^^

Try this code

  UPDATE Towar
 JOIN 
    TowarZamowienie ON Towar.Tow_id = TowarZamowienie.TowZam_id
 SET 
    Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED);
UPDATE Towar, TowarZamowienie
SET Towar.Tow_ilosc = Towar.Tow_ilosc - CAST(TowarZamowienie.TowZam_ilosc AS UNSIGNED)
WHERE Towar.Tow_id = TowarZamowienie.TowZam_id;

--OR

UPDATE Towar
JOIN TowarZamowienie ON Towar.Tow_id = TowarZamowienie.TowZam_id
SET Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top