2014-02-18 3 views
0

Я подготовил запрос SQL, как этотКак правильно вставить varchar в int?

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

и возвращает мне Модифицированные записи: 0. Я признаю, что у меня есть записи в базе данных

Вот мои таблицы:

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) 

Вот моя схема http://sqlfiddle.com/#!2/981b4/1

+0

Проверьте это ... Возможно дубликата ... http://stackoverflow.com/questions/12126991/ cast-from-varchar-to-int-mysql –

+0

@ chris_techno25 это не дубликат, потому что у меня нет ошибок. – user3310883

+1

покажите свои данные примера или скрипки, если это возможно! –

ответ

1

я думаю, вы ошибочный в предложении ON

попробовать этот

ON Towar.Tow_id = TowarZamowienie.TowZam_id 

DEMO

+0

it работает, но не в хорошем смысле. Я размещаю здесь пример – user3310883

+0

. Посмотрите на это http://i59.tinypic.com/mif3fa.png, он должен изменить значения, где tow_id - это то же самое, что и tow_id от towarzamowienie http://i60.tinypic.com/2i7sdu8.png – user3310883

+0

, но мы так близки к решению, что – user3310883

0

Попробуйте этот код

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

значение должно быть отлито от строки до int сначала – user3310883

0

Почему не "слепок" Integer в Varchar? Что, если у Varchar действительно 10 символов, а Integer будет ожидать всего 6 чисел? Попробуйте это:

CAST(Tow_ilosc as CHAR(10)) 

или

CONVERT(Tow_ilosc, CHAR(10)) 

или просто использовать like в пункте где

WHERE Tow_ilosc LIKE TowZam_ilosc 

(мне не нравится, как) ^^

0
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); 
+0

Попробуйте использовать форматирование кода для образцов, которые вы публикуете. Легче читать. Благодаря :) – Bandreid

Смежные вопросы