Как упорядочивать эту консультацию?

Я нуждаюсь в том, чтобы упорядочить таблицу в зависимости от 3 колонн. В настоящее время будь упорядочен языком и потом сервером, и функционируй очень хорошо. Захотев упорядочить это из-за еще одного третьего параметра, оно не функционирует. Настоящая консультация:

SELECT * FROM enlaces where capitulo = $rt and estado = 1 and tipo='online' and servidor != '' ORDER by FIELD(idioma,'lat','es','sub','in','cat'),servidor ASC, id ASC

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

introducir la descripción de la imagen aquí

Сейчас я хочу добавить другой параметр, у которого может быть стоимость, 1 или 2. Колонна называется cpremium, и интересует меня, что он был рукоположен сначала, когда его 2 и потом из-за 1. Я попробовал делать это:

SELECT * FROM enlaces where capitulo = $rt and estado = 1 and tipo='online' and servidor != '' ORDER by FIELD(idioma,'lat','es','sub','in','cat'),servidor ASC, id ASC, cpremium DESC

Но напечатав на экране, он не рукоположен из-за вышеупомянутого параметра, он как будто он не существовал. Например, в изображении раньше, в первых 2 линиях будь сотрудника Хефери и Феликса. Хорошо, так как Феликс был бы должен выходить первый, так как у него есть в колонне cpremium стоимость 2 и Jeferi стоимость, 1. Что я могу делать?

2
задан 30.10.2016, 01:37
3 ответа

Проблема состоит в том, что ты упорядочиваешь из-за id (я представляю себе то, что это единственная стоимость), перед тем, как упорядочивать из-за cpremium. Так что он, действительно, как будто ты не упорядочивал из-за cpremium абсолютно.

ORDER by FIELD(idioma,'lat','es','sub','in','cat'),
         servidor ASC, 
         id ASC, -- aquí está el problema
         cpremium DESC

Чтобы решать проблему, просто ты нуждаешься в том, чтобы упорядочить из-за cpremium перед id:

ORDER by FIELD(idioma,'lat','es','sub','in','cat'),
         servidor ASC, 
         cpremium DESC,
         id ASC -- debes dejar este campo de último
1
ответ дан 24.11.2019, 12:51
  • 1
    Привет, prob и # 233; и я вновь тестировал это, но оно я не функционирует, как он должен выходить..., я не могу напечатать это хорошо с консультацией: SELECT * FROM соедини where я соглашаюсь = на $rt and бывший = 1 and тип = и # 39; он-лайн и # 39; and сервер! = и #39; и #39; ORDER by FIELD (язык, и #39; lat и # 39; и #39; он и # 39; и #39; sub и # 39; и #39; in и # 39; и #39; cat и # 39;), сервер ASC, cpremium DESC, пойдите ASC - как будто он это не имел в виду –  Ángel 30.10.2016, 11:52

Я упростил твою консультацию немного просто с полями, необходимыми для фильтра. Для этого, я создал новую таблицу:

CREATE TABLE Servidores(id int PRIMARY KEY,
             Idioma varchar(255),
             Servidor varchar(255),
             Colaborador varchar(255),
             cpremium  varchar(255)
);

INSERT INTO Servidores VALUES (1, 'lat', 'Gamovideo','FelixX', 2);
INSERT INTO Servidores VALUES (2, 'lat', 'FlashX','FelixX', 2);
INSERT INTO Servidores VALUES (3, 'lat', 'iDoWatch','FelixX', 2);
INSERT INTO Servidores VALUES (4, 'es', 'FlashX','jeferi chacon', 1);

И используя следующую консультацию:

SELECT * FROM Servidores WHERE Servidor != "" ORDER BY FIELD(idioma,'lat','es','sub','in','cat'),Servidor ASC, id ASC, cpremium DESC

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

introducir la descripción de la imagen aquí

Следовательно, попробуй менять команды фильтры, чтобы видеть, - ли проблема, в котором есть какой-то фильтр с большим количеством первенства, чем другие. Поскольку ты можешь подтверждать, в меня оно я функционирует хорошо с твоими фильтрами.

Я использовал следующую страницу для консультации.

EDIT: Действительно в моей предыдущей консультации он являлся последним jeferi chacon благодаря тому, что он был в уникум, который он поместил ему, это язык и самая восходящая идентификация.

В этом случае, ты был бы должен упорядочивать из-за идентификации последнего, как они прокомментировали тебе в предыдущих ответах:

SELECT * FROM Servidores WHERE Servidor != "" ORDER BY FIELD(idioma,'lat','es','sub','in','cat'),Servidor ASC, cpremium DESC, id ASC

с последовательным результатом:

introducir la descripción de la imagen aquí

Соединение в новую консультацию.

0
ответ дан 24.11.2019, 12:51
  • 1
    Чтобы подтверждать ошибку, ты нуждаешься в том, чтобы сравнить реестры, у которых была бы та же стоимость для idioma и servidor. Если не, никогда он не считает ORDER BY колоннами despu и # 233; s servidor. –  sstan 30.10.2016, 02:09
  • 2
    @sstan S и # 237; в этом он был, немного я parec и # 237; в редкий и comet и # 237; неудача помещения и #250; ltimo в jeferi и сверху распределять ему другой язык. Я участвую в рыцарском турнире, когда ты поместил мне комментарий, он издавал ответ. Большое спасибо из-за того, что предупреждает так или иначе. –  Francisco Romero 30.10.2016, 02:12
  • 3
    @sstan я не понимаю, и #191; что ты имеешь в виду с той же стоимостью? Я думаю, что ты дал в гвозде, потому что он точно despu и # 233; s колонны сервер, где он это не принимает во внимание. Себе cercionado, что у колонн сервера и языка есть та же стоимость. Я не понимаю, что он происходит тогда. –  Ángel 30.10.2016, 11:55
  • 4
    и #193; ngel Сосредоточись на консультациях. Измени просто фильтр идентификации в конце концов. Смотри в две im и # 225; гены. В первой я hab и # 237; в запутанный, потому что не hab и # 237; в место ни тот же язык ни верхняя идентификация для jeferi, но во второй консультации ты не можешь видеть с измененными данными, что, изменив фильтр идентификации, оно функционирует правильно. –  Francisco Romero 30.10.2016, 11:56
  • 5
    @error404 ¡ Уже encontré solució n! ¿ Как я могу делать, чтобы это сообщать или это помечать как решенный?. Потом ты говоришь мне, как тебе быть благодарен за всю помощь. И tambié n, поскольку я сообщаю всем тем, кто уведомили, что está я следую и говорить им, что я сделал. –  Ángel 14.11.2016, 13:36

OrdГ©nalas раньше из-за cpremium DESC, что id ASC вероятно первый реестр твоего списка "jeferi" имел одну, пойдите несовершеннолетний, что та второго реестра "felix".

Пробует делать это этой формой, изменяя порядок между cpremium и пойдите:

FIELD(idioma,'lat','es','sub','in','cat'),servidor ASC, cpremium DESC, id ASC
0
ответ дан 24.11.2019, 12:51
  • 1
    Привет, prob и # 233; и я вновь тестировал это, но оно я не функционирует, как он должен выходить..., я не могу напечатать это хорошо с консультацией: SELECT * FROM соедини where я соглашаюсь = на $rt and бывший = 1 and тип = и # 39; он-лайн и # 39; and сервер! = и #39; и #39; ORDER by FIELD (язык, и #39; lat и # 39; и #39; он и # 39; и #39; sub и # 39; и #39; in и # 39; и #39; cat и # 39;), сервер ASC, cpremium DESC, пойдите ASC - как будто он это не имел в виду –  Ángel 30.10.2016, 11:51