- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте, Уважаемые Гуру. Не справиться.
$result66 = mysql_query("SELECT `id`, `unicode`
FROM `zeny` WHERE `unicode`!='unicode' GROUP BY `unicode`;");
while ($row = mysql_fetch_array($result66, MYSQL_ASSOC)) {
$idt = $row['id'];
$unicode= $row['unicode'];
...
Таблица. 10000 тыс товаров. У некоторых совпадают unicode. Но у каждого из них свой номер.
Нужно сгруппировать по unicode (это получается), но сортировка происходит по id товара. Это логично. Не получается сделать сортировку по внутреннему номеру. Прошу помочь. Спасибо!
Вот так не работает.:gm:
$result66 = mysql_query("SELECT `id`, `unicode`
FROM `zeny` WHERE `unicode`!='unicode' GROUP BY `unicode` ORDER by `nomer`;");
while ($row = mysql_fetch_array($result66, MYSQL_ASSOC)) {
$idt = $row['id'];
$unicode= $row['unicode'];
...
т.е. мне надо сперва по хорошему, отсортировать по unicode и nomer, а затем уже сгруппировать, чтобы внутри каждой группы на выходе, была сортировка по номеру...
Когда вы делаете группировку, то из всех записей с одинаковым "unicode" остаётся одна (произвольная с произвольным nomer-ом).
Соответственно, не понятно, что именно вы хотите отсортировать по nomer-у.
Приведите примеры, что ли. Какие данные есть и какие вы хотите получить на выходе.
while ($row = mysql_fetch_array($result66, MYSQL_ASSOC)) {Надеюсь, дальше эти переменные уникализируются?$idt = $row['id'];
$unicode= $row['unicode'];
---------- Добавлено 06.04.2018 в 20:37 ----------
Нужно сгруппировать по unicode
;15550832']Когда вы делаете группировку, то из всех записей с одинаковым "unicode" остаётся одна (произвольная с произвольным nomer-ом).
Соответственно, не понятно, что именно вы хотите отсортировать по nomer-у.
Приведите примеры, что ли. Какие данные есть и какие вы хотите получить на выходе.
Прикрепил срин.
Надо при группировке отсортировать по nomermodif
[ATTACH]172999[/ATTACH]
Сейчас так
$result66 = mysql_query("SELECT `id`, `unicode`, `ur`
FROM `zeny` WHERE `unicode`!='unicode' GROUP BY `unicode`;");
while ($row = mysql_fetch_array($result66, MYSQL_ASSOC)) {
$idt = $row['id'];
$unicode= $row['unicode'];
$ur= $row['ur'];
и в итоге
// для unicode ...641it - - - $ur= "ee|aa", а надо чтобы было "аа|ее", согласно порядку nomermodif
// для unicode ...642it - - - $ur= "kk|cc", а надо чтобы было "cc|kk", согласно порядку nomermodif
// для unicode ...643it - - - $ur= "pp|oo", а надо чтобы было "oo|pp", согласно порядку nomermodif
Не понял, откуда у вас берётся "ee|aa" и "kk|cc", т.к. никакой конкатенации в запросе нет.
Но если вы хотите, чтобы во время группировки из объединяемых записей оставалась только та, у которой меньший nomermodif, можно попробовать сделать так:
SELECT z1.id, z1.unicode, z1.ur FROM zeny z1 LEFT JOIN zeny z2 ON z1.unicode=z2.unicode AND z1.nomermodif>z2.nomermodif WHERE z2.unicode IS NULL
На больших табличках будет медленно ворочаться.
Но со вложенными запросами будет ещё медленнее.
В общем, задача не для MySQL :D
;15556391']Не понял, откуда у вас берётся "ee|aa" и "kk|cc", т.к. никакой конкатенации в запросе нет.
!!!Да, простите, я не весь код показал, мой косяк.
$polyanamecherezslesh = array('ur', 'artikulfabriki','razmer','tolshina');
foreach ($polyanamecherezslesh as $value) {
$polyaharslesh .= "GROUP_CONCAT(`$value` ORDER BY `id` SEPARATOR '|') AS `$value`, ";
}
$polyaharslesh = trim($polyaharslesh, ", ");
$query="SET group_concat_max_len=2048";
$result66 = mysql_query("SELECT `id`, `unicode`, $polyaharslesh
FROM `zeny` WHERE `unicode`!='unicode' GROUP BY `unicode`;");
while ($row = mysql_fetch_array($result66, MYSQL_ASSOC)) {
$idt = $row['id'];
$unicode= $row['unicode'];
$ur= $row['ur'];
;15556391']Но если вы хотите, чтобы во время группировки из объединяемых записей оставалась только та, у которой меньший nomermodif,
нет, надо все, но в порядке по nomermodif
Кажется я понял, просто этого куска когда не видел (забыл про него), надо поменять ORDER BY `id` на ORDER BY `nomermodif`
Но со вложенными запросами будет ещё медленнее.
В общем, задача не для MySQL
Скрипт запускается разово, в среднем раз в неделю, для формирования структуры другой таблицы...
Если надо отсортировать внутри GROUP_CONCAT, соответственно, надо пользоваться тем ORDER BY, который внутри GROUP CONCAT
;15556454']Если надо отсортировать внутри GROUP_CONCAT, соответственно, надо пользоваться тем ORDER BY, который внутри GROUP CONCAT
Да, как выше написал, уже догадался, просто в упор это не видел..
Спасибо, что помогли!