У меня есть ситуация, когда я хочу создать invoice_id для разных продуктов для нескольких городов.Я хочу получить сгенерированный идентификатор счета в соответствии с другим продуктом и городом.
Моя таблица temp
выглядит как
id |order_id |product|city|invoice_id
1 | 123 | 1 | 1 | FPU1
2 | 124 | 6 | 1 | PPU1
Я хочу получить следующую invoice_id
для продукта 1 и города 1 - FPU2.
Для продукта 1 и города 2 - FBN1, продукта 6 и города 1 - PPU2 и т. Д. ...
Я создаю функцию, но не запускаю. Что-то не так в функции?
CREATE function generate(p_id INT, c_id INT)
returns VARCHAR(50)
BEGIN
-- DECLARE v_new_id VARCHAR(50);
SELECT Concat(( CASE
WHEN t.product = 1 THEN "f"
WHEN t.product = 6 THEN "p" end ),
c.city_name, Cast(RIGHT(t.invoice, Length(t.invoice) - 3) AS UNSIGNED) + 1
) v_new_id
FROM temp AS t
JOIN city c
ON c.city_id = t.city
WHERE t.product = p_id
AND t.city = c_id;
RETURN( v_new_id );
end;
Получить синтаксическую ошибку:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 15
### Строка 15 - это AND t.city = c_id;