Я хочу показать список моего продукта, как показано ниже:
Sr.No | Name | Type
--------------------
1 | aa | 2
2 | bb | 2
3 | cc | 3
4 | dd | 2
5 | cc | 4
Но это идет, как показано ниже
Sr.No | Name | Type
--------------------
3 | aa | 2
5 | bb | 2
1 | cc | 3
4 | dd | 2
2 | cc | 4
и когда любая новая запись сделана тогда:
Но это идет, как показано ниже
Sr.No | Name | Type
--------------------
4 | aa | 2
5 | bb | 2
2 | cc | 3
6 | dd | 2
3 | cc | 4
1 | ec | 5 // this below are two new entry made
7 | fc | 4
выше должно быть как ниже:
Sr.No | Name | Type
--------------------
1 | aa | 2
2 | bb | 2
3 | cc | 3
4 | dd | 2
5 | cc | 4
6 | ec | 5 // this below are two new entry made
7 | fc | 4
Дело не в том, что я хочу упорядочить по имени, я просто хочу нормальный Sr.No согласно записи … означает, что если я сначала добавлю какую-либо запись, то Sr.No 1, 2, 3 и так далее
Но когда я добавляю любую новую запись, ее Sr.No меняются, но она должна иметь последний sr.no.
Ниже я попробовал:
SELECT (@cnt := @cnt + 1) AS rowNumber, orn.name, orn.type , u.*
FROM ofr AS u
CROSS JOIN (SELECT @cnt := 0) AS dummy
LEFT JOIN or_name AS orn ON u.id=orn.id
GROUP BY u.id ORDER BY rowNumber AND u.add_datetime DESC
обратите внимание (@cnt: = @cnt + 1) AS rowNumber генерирует серийный номер, и это значение передается ниже под $ cols «Sr.No» …. Sr.No — это имя столбца и ничего больше … его значение идет по «rowNumber»
Листинг называется ниже:
$result = get_details()
$cols = array(
_("Sr.No.")=>array('align'=>'center'),
_("Name")=>array('align'=>'center'),
_("Type")=>array('align'=>'center')
);
$table =& new_db_pager('tablename', $result, $cols, 'ofr','id',10);
$table->width = "95%";
display_db_pager($table);
База данных :
id : bigint(20) UNSIGNED No None AUTO_INCREMENT
Замечания : выше формат от http://frontaccounting.com/
демонстрационная ссылка: http://demo.frontaccounting.eu/
После более внимательного прочтения вопроса я удаляю свой старый ответ и пишу новый.
Похоже, вы пытаетесь автоматически назначить серийный номер каждой новой записи в таблице, и вы хотите, чтобы этот номер был постоянным. Специально для такого рода проблем есть инструмент: автоинкрементное целое число. Вам никогда не нужно устанавливать это поле при вставке записей — база данных автоматически назначит следующий номер.
В вашем DDL вы указываете, что вы хотите, чтобы поле было целым, автоинкрементным, а не нулевым:
CREATE TABLE ofr (
serial MEDIUMINT NOT NULL AUTO_INCREMENT,
... the rest of your fields ...
)
Когда вы запрашиваете таблицу, вам не нужно выполнять какой-либо сложный подсчет строк. Просто выберите серийное поле вместе со всем, что вы хотите.
Люди используют это все время для генерации уникальных идентификаторов в таблице. Он также часто используется в качестве первичного ключа индексации. Более подробная информация доступна на MySQL ссылка.
Других решений пока нет …