Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Xelen

Recommended Posts

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

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

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

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

sdgdgfghfhgserfawe.jpg

Надіслати
Поділитися на інших сайтах

9 минут назад, nikifalex сказал:

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

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

order by product_id

и усе.

 

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

 

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

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

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

Почему так?

 

 

Надіслати
Поділитися на інших сайтах

40 минут назад, Xelen сказал:

 

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

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

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

Почему так?

 

 

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

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

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

 

 

Надіслати
Поділитися на інших сайтах

22 минуты назад, mpn2005 сказал:

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

 

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

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

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

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

 

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

 

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

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

 

 

Надіслати
Поділитися на інших сайтах

1 час назад, Xelen сказал:

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

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

Надіслати
Поділитися на інших сайтах

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

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

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

Надіслати
Поділитися на інших сайтах

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

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

Надіслати
Поділитися на інших сайтах

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

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

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

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

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

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

 

Надіслати
Поділитися на інших сайтах

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

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

Надіслати
Поділитися на інших сайтах


1 час назад, hoolygan сказал:

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

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

 

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

primary key

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

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

 

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

 

 

Надіслати
Поділитися на інших сайтах

25 минут назад, Xelen сказал:

 

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

primary key

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

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

 

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

 

 

Проверил. 

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

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

 

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

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

 

  • +1 1
Надіслати
Поділитися на інших сайтах

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

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

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



 

Надіслати
Поділитися на інших сайтах

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

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

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

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

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

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

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

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

 

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

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

 

 

dfrtggsvergresg.jpg

Надіслати
Поділитися на інших сайтах

6 минут назад, Xelen сказал:

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

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

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

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

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

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

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

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

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

 

 

Надіслати
Поділитися на інших сайтах

3 минуты назад, mpn2005 сказал:

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

 

 

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

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

 

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

Надіслати
Поділитися на інших сайтах

12 минут назад, Xelen сказал:

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

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

 

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

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

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

UPDATE oc_product SET description = '/*'

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

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.