Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Порядок записей в БД


Recommended Posts

Есть один сайт, не я его делала. Попросили им настроить импорт, был куплен модуль, но вопрос не к разработчику уже.

в процессе настройки импорта обнаружилось, что на сайте при импорте товаров и при обычном добавлении, в базе данных в таблице product  и product_description  и можт ещё где, я уже не проверяла, записи сохраняются вперемешку. И это при экспорте товаров выдает их в том же беспорядке, а это очень напрягает.

Насколько я вижу в своих созданных сайтах, там по-умолчанию есть порядок по ID, и при экспорте сразу все ок, последние товары находятся внизу.

Что-то с этой базой не так, может кто знает что сбивает этот порядок, и это чинится вообще?

sdgdgfghfhgserfawe.jpg

Link to post
Share on other sites

в mysql нет предопределенного порядка сортировки, тем более в phpmyadmin

как вам надо, так и сортируйте сами.

order by product_id

и усе.

 

Все у вас нормально. Просто при экспорте в sql завпросе порядок сортировки явно пропишите

Link to post
Share on other sites
9 минут назад, nikifalex сказал:

в mysql нет предопределенного порядка сортировки, тем более в phpmyadmin

как вам надо, так и сортируйте сами.

order by product_id

и усе.

 

Все у вас нормально. Просто при экспорте в sql завпросе порядок сортировки явно пропишите

 

нет, я открываю когда любую базу, а их много у меня, в phpmyadmin, там всегда стоят первые товары наверху, если пролистаю последнюю страницу, там последний добавленный товар. То есть есть дефолтный порядок фильтрации записей в базе до применения фильтров в phpmyadmin

нет такого чтобы там, до применения фильтров ID  шли вразброс, и экспорт всегда тащит из этого порядка по-умолчанию.

А вот именно эта база, одна из 10 вот так выглядит, и тот же модуль экспорта ровно так и тащит из неё все ID  вразброс

Почему так?

 

 

Link to post
Share on other sites
40 минут назад, Xelen сказал:

 

нет, я открываю когда любую базу, а их много у меня, в phpmyadmin, там всегда стоят первые товары наверху, если пролистаю последнюю страницу, там последний добавленный товар. То есть есть дефолтный порядок фильтрации записей в базе до применения фильтров в phpmyadmin

нет такого чтобы там, до применения фильтров ID  шли вразброс, и экспорт всегда тащит из этого порядка по-умолчанию.

А вот именно эта база, одна из 10 вот так выглядит, и тот же модуль экспорта ровно так и тащит из неё все ID  вразброс

Почему так?

 

 

Видать модуль экспорта так выгрузил и загрузил.

В БД нет определённого порядка, как писалось выше. На работу это не влияет. И порадок по очерёдности добавления не гарантируется БД.

Если надо выгружать по порядку, то небходимо немного поправить модуль выгрузки. Добавив в него явное указание для сортировки.

 

 

Link to post
Share on other sites
22 минуты назад, mpn2005 сказал:

Видать модуль экспорта так выгрузил и загрузил.

 

ручное добавление тож самое.

но я сейчас поняла, что дело не в добавлении, а в том, по какому принципу в phpmyadmin  идет дефолтная сортировка.

Почему у меня другие базы он сортирует сам по первому полю ID, а эту нет.

Может дело в настройках полей таблиц?

 

я просто писала, что не я делала этот сайт, но вижу там много дописано, и вот база себя ведет нестандартно

 

модуль выгрузки менять не хотелось бы, потому что он везде работает ( это CSV Price Pro) не на первый сайт его я ставлю,

поэтому правильнее мне кажется, найти причину в сайте

 

 

Link to post
Share on other sites
1 час назад, Xelen сказал:

нет, я открываю когда любую базу, а их много у меня, в phpmyadmin, там всегда стоят первые товары наверху, если пролистаю последнюю страницу, там последний добавленный товар

Никогда не обращал внимание на сортировку при входе, но в В phpMyAdmin 4.5.0, и в более ранних версиях, можно установить $cfg['TablePrimaryKeyOrder'] = 'DESC'

Link to post
Share on other sites

да вот я смотрю, все таблицы во всех базах отсортированы по первичному ключу, пока сам не решишь сортировать иначе, а в этой базе некоторые таблицы по нему не сортируются. ( не все, страны, address и многие другие все время по первичному)

Рядом база нулевого опенкрат 2, там все строго по первичному

вообще пока не вижу логики, отчего это происходит.

Link to post
Share on other sites

ну вот я нашла - есть настройка в Операциях для таблицы  Изменить сортировку таблицы

теперь сортирует по ID  и экспорт вытаскивает в порядке возрастания

Link to post
Share on other sites

Может в ней кто-то грохнул первичный ключ? :)

Link to post
Share on other sites

8 минут назад, hoolygan сказал:

Может в ней кто-то грохнул первичный ключ? :)

нет, он был. это первое, что проверила.

сортировку можно сменить на любое поле, а первичный ключ остается у product_id

при чем эта сортировка переносится вместе с базой, я тестировала базу на другом хостинге.

в эту же базу установила с другим префиксом новый сайт, и в соседней таблице в другим префиксом _products  была нормальная сортировка по ID

 

Link to post
Share on other sites

Сортировки в таблице при селекте нет. Она проставляется в phpmyadmin, но это ПО никак не относится к mysql.

Поэтому и посыл к тому, что в других таблицах по primary key сортируется - скорее приятная особенность, чем правило :)

Link to post
Share on other sites

Уточнил в документаци.

Для таблиц myISAM есть сортировка по умолчанию. Выставить можно так: ALTER TABLE ... ORDER BY

Link to post
Share on other sites
1 час назад, hoolygan сказал:

Сортировки в таблице при селекте нет. Она проставляется в phpmyadmin, но это ПО никак не относится к mysql.

Поэтому и посыл к тому, что в других таблицах по primary key сортируется - скорее приятная особенность, чем правило :)

 

Это только выглядело что по primary key, а заглянешь в любую таблицу где устанавливается сортировка, там везде id , просто они совпадают с

primary key

теперь понятно, что выше писали, что нет сортировки у таблиц, и много где пишут что не сортируется ничего по primary key

ну и я выше написала вроде, что поле для сортировки можно сменить, а ключ останется.

 

почему у меня перенеслось с непонятной сортировкой на другой хост, мне не понятно, я тоже склонна думать, что сортирует именно phpmyadmin

 

 

Link to post
Share on other sites
25 минут назад, Xelen сказал:

 

ну вот кстати, это только выглядело что по primary key, а заглянешь в любую таблицу где устанавливается сортировка, там везде id , просто они совпадают с

primary key

теперь понятно, что выше писали, что нет сортировки у таблиц, и много где пишут что не сортируется ничего по primary key

ну и я выше написала вроде, что поле для сортировки можно сменить, а ключ останется.

 

почему у меня перенеслось с непонятной сортировкой на другой хост, мне не понятно, я тоже склонна думать, что сортирует именно phpmyadmin

 

 

Проверил. 

Установленная сортировка работает не только для phpMyAdmin. Будет работать везде, где не указан явно ORDER BY.

Но это только для таблиц MyISAM.

 

При выгрузке данных через phpMyAdmin параметр сортировки, в моём случае, не указывался в файле выгрузки.

Но не исключено, что мог данный параметр и перенестись.

 

  • +1 1
Link to post
Share on other sites

В реляционных базах, а mysql, в том числе, к ним относится нет понятия сортировки при выборке., если явно не указан порядок сортировки и поле по которому оно сортируется, в основном это связано со случайным доступом к хранилищу (если говорить доступными словами). Об этом вам уже несколько раз сказали
Поэтому иногда можно встретить вывод одного и того же товара на разных страницах категорий, потому и в getProducts применяется сортировка order by sort_order, name

Потому, и существуют analyze, optimize

Причем на разных серверах, и порядок выборки может быть разный, в зависимости от того как, например был произведен дамп базы(или бекап)



 

Link to post
Share on other sites

у меня тут возникло предположение, хочется понять все же, что это было.

посмотрела дамп не исправленной ещё базы, которая была с глюком, нашла огромный участок базы, который notepad  показывал, как закомментированный

туда как раз входили эти таблицы, которые не сортировались, их было несколько.

я стала искать начало комментария,это оказалась часть кода модификатора Local copy OCMOD by iSenseLabs , а заканчивался комментарий аж на запаси товара с 25 ID

там было спарсено описание со всяким мусором, которое и закрыло комменатрий

выходит, все товары были закомментированы, и база не определяла ID  как число, чтобы по нему сортировать?

после нажатия на сортировку произошла автопочинка? (я тут не спец, только догадки)

код в модификаторе заменился на $path[] = $file . ''/*'';\r\n

 

но сайт работал даже вот так.

p.s. хотя, смотрю он ещё ниже блок тащит, эта красная полоска слева в редакторе.  там черти что в контенте.

 

 

dfrtggsvergresg.jpg

Link to post
Share on other sites
6 минут назад, Xelen сказал:

у меня тут возникло предположение, хочется понять все же, что это было.

посмотрела дамп не исправленной ещё базы, которая была с глюком, нашла огромный участок базы, который notepad  показывал, как закомментированный

туда как раз входили эти таблицы, которые не сортировались, их было несколько.

я стала искать начало комментария,это оказалась часть кода модификатора Local copy OCMOD by iSenseLabs , а заканчивался комментарий аж на запаси товара с 25 ID

там было спарсено описание со всяким мусором, которое и закрыло комменатрий

выходит, все товары были закомментированы, и база не определяла ID  как число, чтобы по нему сортировать?

после нажатия на сортировку произошла автопочинка? (я тут не спец, только догадки)

код в модификаторе заменился на $path[] = $file . ''/*'';\r\n

На это не смотрите. Это редактор неверно истрактовал /* внутри данных.

 

 

Link to post
Share on other sites
3 минуты назад, mpn2005 сказал:

На это не смотрите. Это редактор неверно истрактовал /* внутри данных.

 

 

а в отсортированной базе уже этого комментария нет и код в модификаторе он закрыл в кавычки

вообще логично, что не сортировало по id, если они были все закомментированы, база считала их текстовыми.

 

потому что в Операциях я сортировку не меняла, там стояло по ID, я просто её подтвердила заново.

Link to post
Share on other sites
12 минут назад, Xelen сказал:

а в отсортированной базе уже этого комментария нет и код в модификаторе он закрыл в кавычки

вообще логично, что не сортировало по id, если они были все закомментированы, база считала их текстовыми.

 

потому что в Операциях я сортировку не меняла, там стояло по ID, я просто её подтвердила заново.

Просто изменилась очерёдность и редактор уже подругому подсветил.

Редактор похоже не учитывает /* если это входит внутрь строки запроса. Например:

UPDATE oc_product SET description = '/*'

В данном случае это не является началом комментария. Но редактор на это забивает и подсвечивает то чего не надо.

  • +1 1
Link to post
Share on other sites

Похоже, да. Не удалось мне раскрыть великий заговор.

Значит, была зашита где-то сортировка

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.