Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ORDER BY 
V
    Опции темы
FRAGNATIC
Дата 19.5.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Код

Create table Items
(
   id int,
   p1 int,
   p2 int
)

Вот нужно сортировать эти записи по p1 и p2 ) причём по какому-то одному из этих полей, но именно наименьшему, при этом если п1 = 0, то тогда сортировать по п2, вообщем 0 не считать.
Допустим
id = 1 p1 = 9 p2 = 0;
id = 2 p1 = 0 p2 = 8;
id = 3 p1 = 0 p2 = 7;
id = 4 p1 = 6 p2 = 7;
id = 5 p1 = 7 p2 = 6;
должно вывести в таком порядке по ИД перечислю
4,5,3,2,1
Надеюсь понятно объяснил.
Как вариант предлогали сортировать по сумме п1+п2, но не совсем корек-то выходит когда одно из п равно 0, то тогда всё гуд типа 9+0,
но а вот 6+7 уже не тот получается =) 
PM MAIL   Вверх
Ignat
Дата 19.5.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Если я тебя правильно понял.

Код

SELECT *, IF(`p1`<`p2`, `p1`, `p2`) AS `ordering`FROM `Items` ORDER BY `ordering` DESC ;
   


--------------------
Теперь при чем :P
PM   Вверх
FRAGNATIC
Дата 19.5.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Ignat, Спасибо.
Новерное правильно понял
Я думал что IF нету )
Где про использование IF можно почитать?
из выше написаного кода я понял синтаксис такой
if(условие, если верно то это значение, иначе это)
IF(`p1`<`p2`, `p1`, `p2`) =)
 

Это сообщение отредактировал(а) FRAGNATIC - 19.5.2006, 15:41
PM MAIL   Вверх
Ignat
Дата 19.5.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(FRAGNATIC @  19.5.2006,  16:29 Найти цитируемый пост)
из выше написаного кода я понял синтаксис такой

Совершенно верно.

Цитата(FRAGNATIC @  19.5.2006,  16:29 Найти цитируемый пост)
Где про использование IF можно почитать?

В мануале =)
http://dev.mysql.com/doc/refman/4.1/en/con...-functions.html

Добавлено @ 15:46 
FRAGNATIC, Получилось? 


--------------------
Теперь при чем :P
PM   Вверх
FRAGNATIC
Дата 19.5.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Не совсем)
это пашет 
Код

SELECT i.Item_id, COUNT(*) AS num, COUNT(DISTINCT(o.Order_id)) AS sales 
FROM (fb_items i, fb_users u) 
LEFT JOIN fb_words w ON w.Item_id=i.Item_id 
LEFT JOIN fb_orders o ON o.Item_id = i.Item_id AND o.IsPaid = 'Y' 
WHERE i.User_id=u.User_id AND u.IsActive=1 AND i.IsActive=1 AND i.IsRejected=0 
AND (((`Price1` !=0 OR (i.Price2 != 0 AND i.IsExclusive != 0)) AND IsExclSale != 1
AND IsHide != 1 ))
GROUP BY i.Item_id 
ORDER BY u.Group_id DESC, i.Price1 DESC

а это нет 
Код

SELECT i.Item_id,  IF(i.Price1<i.Price2, 'i.Price1', `i.Price2`) AS ordering, COUNT(*) AS num, COUNT(DISTINCT(o.Order_id)) AS sales 
FROM (fb_items i, fb_users u) 
LEFT JOIN fb_words w ON w.Item_id=i.Item_id 
LEFT JOIN fb_orders o ON o.Item_id = i.Item_id AND o.IsPaid = 'Y' 
WHERE i.User_id=u.User_id AND u.IsActive=1 AND i.IsActive=1 
AND i.IsRejected=0 AND (((`Price1` !=0 OR (i.Price2 != 0 AND i.IsExclusive != 0)) 
AND IsExclSale != 1 AND IsHide != 1 )) 
GROUP BY i.Item_id 
ORDER BY u.Group_id DESC, ordering DESC

Цитата
Error occurred:
Unknown column 'i.Price2' in 'field list'


+ надобы предусмотреть что одно из значение может быть 0
Есть ли чёнить типа ELSE или ELSEIF ?  

Это сообщение отредактировал(а) FRAGNATIC - 19.5.2006, 16:23
PM MAIL   Вверх
FRAGNATIC
Дата 19.5.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Вообщем по смыслу надо что-то типа этого
имеем Price1 и Price2
Код

if(Price1<Price2 AND Price1!=0)
{
   Price = Price1
} elseif(Price2!=0)
{
  Price = Price2
}

и в итоге ORDER BY Price;
 
PM MAIL   Вверх
Ignat
Дата 19.5.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Попробуй:
Код

SELECT i.Item_id,  IF(`i`.`Price1`<`i`.`Price2`, IF(`i`.`Price1`,`i`.`Price1`, `i`.`Price2`), `i`.`Price2`)  AS ordering, COUNT(*) AS num, COUNT(DISTINCT(o.Order_id)) AS sales 
FROM (fb_items i, fb_users u) 
LEFT JOIN fb_words w ON w.Item_id=i.Item_id 
LEFT JOIN fb_orders o ON o.Item_id = i.Item_id AND o.IsPaid = 'Y' 
WHERE i.User_id=u.User_id AND u.IsActive=1 AND i.IsActive=1 
AND i.IsRejected=0 AND (((`Price1` !=0 OR (i.Price2 != 0 AND i.IsExclusive != 0)) 
AND IsExclSale != 1 AND IsHide != 1 )) 
GROUP BY i.Item_id 
ORDER BY u.Group_id DESC, ordering DESC
 


--------------------
Теперь при чем :P
PM   Вверх
Akina
Дата 19.5.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Код

if(price1*price2=0, price1+price2, if(price1<price2, price1, price2)) AS price
 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ignat
Дата 19.5.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Akina, классно =) 


--------------------
Теперь при чем :P
PM   Вверх
FRAGNATIC
Дата 19.5.2006, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Респект всем!
Спасибо! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.