Order by не функционирует - PHP

У меня есть эта таблица:

introducir la descripción de la imagen aquí

Я делаю эту консультацию, чтобы получать аккуратные данные и создавать один select:

select id, nombre from usuarios_grupos ORDER BY `nombre` ASC 

... и это результат, sorpresivamente он это не упорядочивает.

introducir la descripción de la imagen aquí

Раньше оно функционировало: Что я изменил?

Так как я перешел с другим из Windows посвященного сервера с Linux и Апачи.

Я добавляю 12/1/17:

Любопытное состоит в том, что да он применяет тип команды, а именно, эта консультация:

select пойдите, назовите from usuarios_grupos ORDER BY назовите ASC

Возврати:
Пойдите Восходящее имя 1
10 Модуль заплатил
4 Инспектор
9 Магазин
2 Администратор
1 Создатель
8 Компаньон
3 Пользователь

И эта консультация:

select пойдите, назовите from usuarios_grupos ORDER BY назовите DESC

Возврати:
пойдите Нисходящее имя 1
3 Пользователь
8 Компаньон
1 Создатель
2 Администратор
9 Магазин
4 Инспектор
10 Модуль заплатил

Это код php, что работает, с тем же результатом:

<select name="id_grupo" size="1" <?=$noacceso?>>
<?php
$sql = "select id, nombre from usuarios_grupos";
if((int)$_SESSION["grupo"] !== 1) $sql .= " where id<>1" ;
$sql .= " order by nombre";

$result = $conn->query($sql) Or Die ("ER0081: Error cargando datos");

while($rs = $result->fetch_object())
{
    If ((int)$rs->id !== $id_grupo)
    {
        Echo "<option value='" . $rs->id . "'>" . $rs->nombre . "</option>";
    }
    Else
    {
        Echo "<option selected value='" . $rs->id . "'>" . $rs->nombre . "</option>";
    }
}
$result->close();
?>

3
задан 12.01.2017, 17:11
0 ответов

Я просил тебя, чтобы скроллировать следующую консультацию, чтобы ставить диагноз проблеме:

select id, nombre, ascii(nombre)
  from usuarios_grupos
 order by nombre

И твой результат пошел:

id  nombre        ascii(nombre) 
--  ------        -------------
10  Módulo pago   32 
4   Supervisor    32 
9   Tienda        32 
2   Administrador 65 
1   Creador       67 
8   Socio         83 
3   Usuario       85

С этим результатом возможно видеть яснее, какова проблема. Поскольку ты можешь видеть, код Американский стандартный код обмена информацией первого символа первых 3 реестров 32, или же, место (' ').

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

  • ' Módulo pago'
  • ' Supervisor'
  • ' Tienda'

И как символ 32 он считается ниже буквенно-цифровых символов, это объясняет, почему эти 3 реестра оказываются первыми.

Очевидно, он тебе коснется решать, как упорядочивать problemita. Возможно захоти исправить данные, чтобы перемещать место в излишке:

update usuarios_grupos
   set nombre = trim(nombre);

Или возможно согласись с тем, чтобы упорядочить ORDER BY для того, чтобы он проигнорировал место больше:

select id, nombre
  from usuarios_grupos
 order by trim(nombre)
4
ответ дан 03.12.2019, 17:45

Ты попытался, хотя поместил число колонны в order by, а именно ORDER BY 2, чтобы упорядочивать из-за второй колонны?

select id, nombre from usuarios_grupos ORDER BY 2 ASC 
0
ответ дан 03.12.2019, 17:45
  • 1
    ¿ Ты можешь объяснять из-за qué это solucionarí в проблему? –  12.01.2017, 05:16
  • 2
    Я получаю тот же результат. –  12.01.2017, 16:56

сними кавычки, которые у тебя есть в nombre и оно ты будет функционировать.

order by это осталось бы так:

 order by nombre;

Привет!

-1
ответ дан 03.12.2019, 17:45
  • 1
    ¿ Ты можешь объяснять из-за qué это solucionarí в проблему? –  11.01.2017, 17:56
  • 2
    Что идет, уже probé он делает их сам. –  12.01.2017, 16:58

пробуй с

select ug.id, ug.nombre from usuarios_grupos ug ORDER BY ug.nombre ASC 
-1
ответ дан 03.12.2019, 17:45
  • 1
    ¿ Ты можешь объяснять из-за qué это solucionarí в проблему? –  12.01.2017, 05:16
  • 2
    Совсем не, он делает их сам. –  12.01.2017, 16:57

Привет я думаю, что проблема приходит из типа cotejamiento, так как колонна Nombre у тебя есть она как utf8_general_ci.

Точность, чтобы упорядочивать данные:

utf8_unicode_ci: Он основывается на стандарте Unicode, чтобы упорядочивать, и упорядочивает точно в широком спектре языков.

utf8_general_ci: Он приближается многий, чтобы упорядочивать правильно с Unicode на многих общих языках, но у него есть серия неточностей, упорядочив на каких-то языках, а следовательно он не является рекомендуемым для правильного распорядка на всех языках.

Доказательство меняя тип cotejamiento и ты рассказываешь нам

0
ответ дан 03.12.2019, 17:45
  • 1
    Привет это 1-ый раз, который я отвечаю по крайней мере podrí an говорить мне, потому что отрицательный обет, чтобы знать, сказал ли я или seguí algú n процедура плохо? –  11.01.2017, 15:38
  • 2
    Привет Có ndor. Я это чувствую из-за этого отрицательного обета. Но реальность состоит в том, что то, что ты говоришь, не является возможным. Не имеет значение, если говорится об общем collate или unicode, ни один из этих tendrí в трудность в упорядочивании символов bá sicos как A, C, M, S, и т.д.... Если говорится о специальных символах, возможно, но не случай aquí. –  11.01.2017, 15:46
  • 3
    Ах хорошо я новый в этом и только querí чтобы помогать, я думаю, что я бросаюсь в ответе –  11.01.2017, 15:47
  • 4
    Нет проблем. Aquí я оставляю ссылку, которая доказывает, что оба collate могут упорядочивать эту стоимость правильно: rextester.com/RAC68089 , а следовательно проблема должна быть другой. –  11.01.2017, 15:52
  • 5
    Я попытался с двумя и ничто, это было первое, что cambié. –  12.01.2017, 17:01

Теги

Похожие вопросы