2016-11-03 2 views
0

У меня есть запрос MySQL:Борясь с запросом MySQL

SELECT 
    CONCAT(SUBSTRING(no_intern, 1, 2 * 1), 
    MAX(SUBSTRING(no_intern, (2 * 2) -1, 2)) 
) AS menu 
FROM tb_m_menu 
WHERE no_intern LIKE (SELECT CONCAT(SUBSTRING(no_intern, 1, 2 * level_menu), '%') FROM tb_m_menu WHERE id_menu = 1) 

Результат является: 0101

Теперь я хочу, результат всегда увеличивается на единицу: 0101,0102,0103, но когда я изменить сценарий, как это:

SELECT 
    CONCAT(SUBSTRING(no_intern, 1, 2 * 1), 
    MAX(SUBSTRING(no_intern, (2 * 2) -1, 2))+1 /*ditambahkan 1*/ 
) AS menu 
FROM tb_m_menu 
WHERE no_intern LIKE (SELECT CONCAT(SUBSTRING(no_intern, 1, 2 * level_menu), '%') FROM tb_m_menu WHERE id_menu = 1) 

Результат: 012.013

Как сделать это: 0102,0103,0104?

ответ

0

Я думаю, вы ошибаетесь +1 Попробуйте этот. Изменить положение +1 вблизи AS МЕНЮ

SELECT CONCAT(SUBSTRING(no_intern, 1, 2 * 1), 
MAX(SUBSTRING(no_intern, (2 * 2) -1, 2)))+1 AS menu 
FROM tb_m_menu 
WHERE no_intern LIKE (SELECT CONCAT(SUBSTRING(no_intern, 1, 2 * level_menu), '%') FROM tb_m_menu WHERE id_menu = 1) 
+0

если я использовать свой код, результат: 102103, ..... –

+0

ты решил проблему? @TaufiqurRohman? что является содержанием ** no_intern **? – Halla

0

(Добавлено решение от имени ОП).

Я использую этот код:

SELECT 
    CONCAT(SUBSTRING(no_intern, 1, 2 * 1), 
    CONCAT(REPEAT('0', 2-LENGTH(MAX(SUBSTRING(no_intern, (2 * 2) -1, 2))+1)), MAX(SUBSTRING(no_intern, (2 * 2) -1, 2))+1) 
) AS menu 
FROM tb_m_menu 
WHERE no_intern LIKE (SELECT CONCAT(SUBSTRING(no_intern, 1, 2 * level_menu), '%') FROM tb_m_menu WHERE id_menu = 3)