Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Помощь с запросом

eckoecko
сообщение 18.11.2013, 15:40
Сообщение #1
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

Всем привет.
Кто может, помогите мне пожалуйста с запросом.
Нужно чтобы значало выводился список с сортировкой по ид по убыванию со значением type=1 и тоже самое: чписок с сортировкой по ид по убыванию с type=2

Я придумал как, спс маздану, но не знаю как это реализовать. Изначально список имеет вид с соровкой по ид по возрастанию.

Я думаю так:

1 шаг: Изменяем значения id на -id где type=1
2 шаг: Измененные значения соритруем по убыванию. Все ок.
3 шаг: Нужно просто отсориторовать список с полями ид по убыванию где type=2

Заранее спасибо.

Отредактировал: eckoecko, - 19.11.2013, 16:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Legenda
сообщение 18.11.2013, 15:44
Сообщение #2


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Код
if (type=1)
{
  SELECT *
  FROM  `table`
  ORDER BY  `table`.`id` ASC
}
else if (type=2)
{
  SELECT *
  FROM  `table`
  ORDER BY  `table`.`id` DESC
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
eckoecko
сообщение 18.11.2013, 15:46
Сообщение #3
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

Спс. Но мне нужно чтобы это все запросом было и чтобы выполнялось поочередно. сначала с type = 1 потом type = 2
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 18.11.2013, 15:51
Сообщение #4


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

ни черта не понял
выполняй запросы поочередно
сначала один запрос, потом второй
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
eckoecko
сообщение 18.11.2013, 15:56
Сообщение #5
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

Цитата(Legenda @ 18.11.2013, 16:51) *
ни черта не понял
выполняй запросы поочередно
сначала один запрос, потом второй

Вот я думаю мб вот так: SELECT * FROM table WHERE type=1 ORDER BY id DESC потом SELECT * FROM table WHERE type=2 ORDER BY id DESC
Дело в том что, WHERE с ALTER TABLE не хочет дружить
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя onotole
сообщение 18.11.2013, 15:57
Сообщение #6


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

А при чём тут ALTER TABLE вообще?
Топикстартеру надо бы как-то по подробнее рассказать задачу
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
eckoecko
сообщение 18.11.2013, 15:59
Сообщение #7
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

Еще: я случайно сбил поле id теперь когда добавляется новая запись она нумеруется 1001, 1002 и т.д я случайно поменял с 100 на 1000
Как исправить? Заранее спс

Цитата(onotole @ 18.11.2013, 16:57) *
А при чём тут ALTER TABLE вообще?
Топикстартеру надо бы как-то по подробнее рассказать задачу

для изменения сортировки таблицы. Разве можно без нее сделать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя onotole
сообщение 18.11.2013, 16:02
Сообщение #8


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

Цитата(eckoecko @ 18.11.2013, 16:59) *
для изменения сортировки таблицы. Разве можно без нее сделать?

Что значит изменение сортировки? ORDER BY уже запретили чтоли?

Цитата(eckoecko @ 18.11.2013, 16:59) *
Еще: я случайно сбил поле id теперь когда добавляется новая запись она нумеруется 1001, 1002 и т.д я случайно поменял с 100 на 1000
Как исправить? Заранее спс

В PhpMyAdmin выбираешь таблицу - Опции - auto_increment

Отредактировал: onotole, - 18.11.2013, 16:03
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
eckoecko
сообщение 18.11.2013, 16:04
Сообщение #9
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

Обновил шапку. За auto_increment спасибо.

Отредактировал: eckoecko, - 18.11.2013, 16:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
eckoecko
сообщение 18.11.2013, 16:10
Сообщение #10
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

onotole, и нужно не выбор а изменение в самой sql, т.е изменение расположения самих строк. Вот зачем ALTER TABLE

Т.е мне нужно дополнить этот запрос: ALTER TABLE `servers` ORDER BY `id` DESC

Отредактировал: eckoecko, - 18.11.2013, 16:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя onotole
сообщение 18.11.2013, 16:15
Сообщение #11


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

Цитата(eckoecko @ 18.11.2013, 17:10) *
onotole, и нужно не выбор а изменение в самой sql, т.е изменение расположения самих строк. Вот зачем ALTER TABLE

Т.е мне нужно дополнить этот запрос: ALTER TABLE `servers` ORDER BY `id` DESC

Вообще ничего не понял...
Зачем менять их местами?

Код:

SELECT * FROM `table` WHERE `type` IN(1,2) ORDER BY `id` DESC;

Это?

В PhpMyAdmin вообще там всё настроить можно
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
eckoecko
сообщение 18.11.2013, 16:16
Сообщение #12
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

Щас в ЛС напишу. Тему офф.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 18.11.2013, 16:16
Сообщение #13


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

через union может?


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
eckoecko
сообщение 18.11.2013, 16:20
Сообщение #14
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

Цитата(mazdan @ 18.11.2013, 17:16) *
через union может?

да да только как его с ALTER TABLE совместить.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 18.11.2013, 16:23
Сообщение #15


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

UPDATE `servers` set id = -id where type = 2
ALTER TABLE `servers` ORDER BY `id` DESC
UPDATE `servers` set id = -id where type = 2
profit :D
или
ALTER TABLE `servers` ORDER BY (3-2*`type`)*`id` DESC :D
Иначе через временную таблицу


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
eckoecko
сообщение 18.11.2013, 16:24
Сообщение #16
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

Цитата(mazdan @ 18.11.2013, 16:23) *
UPDATE `servers` set id = -id where type = 2
ALTER TABLE `servers` ORDER BY `id` DESC
UPDATE `servers` set id = -id where type = 2
profit :D

где type 1?)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 18.11.2013, 16:26
Сообщение #17


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

eckoecko, а зачем вам его трогать? у вас ALTER TABLE без условия там и 1 и 2 будет

я просто как вариант имел ввиду чтобы одной сортировкой сделать и type1 и type2в нужном порядке


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
eckoecko
сообщение 18.11.2013, 16:27
Сообщение #18
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

mazdan, спс. Теперь тему точно офф.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
eckoecko
сообщение 19.11.2013, 16:36
Сообщение #19
Стаж: 14 лет

Сообщений: 1705
Благодарностей: 266
Полезность: 0

Опять нужна помощь. Обновил шапку.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 19.11.2013, 17:08
Сообщение #20


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Если просто выбрать то вот:
Код
slelect * from table where type = 1
union
select * from table where type = 2


Если крутануть сортировки то так сработало (пример)
Цитата
SELECT `bid`, `admin_nick` FROM `amxx_bans` WHERE `ban_created` > UNIX_TIMESTAMP(NOW()) - 60*60*10 ORDER BY ((1-2*(`admin_nick` LIKE 'Сервер'))*`bid`) ASC

Скрытый текст
2292 Сервер
2291 Сервер
2290 Сервер
2289 Сервер
2288 Сервер
2301 IOvel1r
2329 IOvel1r
2347 cr3at1ve
Если не крутить, то через union, но задача не очень понятна...
Если надо просто сначала type 1 и id по возрастанию, а потом type 2 и айди по возрастанию. то делаешь просто
ORDER BY type, id
Скрытый текст

SELECT `bid`, `admin_nick` FROM `amxx_bans` WHERE `ban_created` > UNIX_TIMESTAMP(NOW()) - 60*60*10 ORDER BY `admin_nick`, `bid` ASC

bid admin_nick

2347 cr3at1ve
2301 IOvel1r
2329 IOvel1r
2288 Сервер
2289 Сервер
2290 Сервер
2291 Сервер
2292 Сервер
2293 Сервер
2294 Сервер
2295 Сервер
2296 Сервер
2297 Сервер
2298 Сервер

p.s. только я далек от SQL, бд и т.п., это далеко не оптимальные вещи.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: