Одним UPDATE надо решить следующую проблему:
Если m_bid != 0
- записать это значение в smax
.
Иначе, записать в smax
наименьшее из двух значений: m_bid
из shops_table
, либо max * bid_part
. Я пробовал справиться с этим на тестовых таблицах и по частям. Такой UPDATE:
UPDATE cat_table t0
JOIN (
SELECT sid, m_bid, max, bid_part
FROM cat_table
) t1
SET t0.smax=
CASE
WHEN t1.m_bid!=0 THEN t1.m_bid
ELSE
CASE
WHEN 1<t1.max*t1.bid_part THEN 1
ELSE t1.max*t1.bid_part
END
END;
Отрабатывает корректно. Начинаю усложнять:
UPDATE cat_table t0
JOIN (
SELECT sid, m_bid, max, bid_part
FROM cat_table
) t1
JOIN (
SELECT m_bid
FROM shops_table sh
WHERE t1.sid=sh.sid
) t2
SET t0.smax=
CASE
WHEN t1.m_bid!=0 THEN t1.m_bid
ELSE
CASE
WHEN t2.m_bid<t1.max*t1.bid_part THEN t2.m_bid
ELSE t1.max*t1.bid_part
END
END;
Ошибка
ERROR 1054 (42S22): Unknown column 't1.sid' in 'where clause'
Что мешает ему "зацепить" sid из первого SELECT? Как исправить?
Так?
UPDATE
cat_table t0
JOIN shops_table sh ON (
t0.sid=sh.sid
)
SET t0.smax =
IF(
t0.m_bid != 0,
t0.m_bid,
LEAST(sh.m_bid, t0.max*t0.bid_part)
)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть скрипт создающий изображение в canvas, это изображение получается сохранить в папку, а вот передать его по ftp не удается, он создает файл...
Всем привет, пытаюсь вывести shortcode, но не получаетсяНадеюсь кто-нибудь укажет на решение