Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод из базы по определенным параметрам учитывая другие параметры

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Описание: )
dropoff
Отправлено: 25 Октября, 2011 - 00:40:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Доброго времени суток!

Ребята, такой вопрос

Стандартно вывод после захода в категорию товаров идет по цене по возрастанию.
То есть: цена 10, цена 27, цена 56 и т.д...
Так же есть возможность отсортировать по имени товара ASC, DESC.

Но! У каждого товара есть статус, в котором указывается: есть ли этот товар в наличии или нет.

Так вот.
Мне нужно, чтобы товар который Есть в наличии всегда был первым в списке при любой сортировке.
Сортирую я к примеру по Названию товара и первые товары в списке те, которые есть в наличии, далее которые Под заказ, далее, которых Нет в наличии.

Это для того, чтобы товар который Есть в наличии всегда был первый. А то получается, что он разбросан по всему списку.

|Сортировка по имени->
|--Сортировка по имени со статусом Есть в нал.->
|Сортировка по имени->
|--Сортировка по имени со статусом Нет в наличии->
|Сортировка по имени->
|--Сортировка по имени со статусом Под заказ

Это как бы условный список такой)

реально ли такое только запросом сделать?

PS. Если вдруг не очень понятно, то я про ORDER BY.
Ситуация, когда вывод отсортирован по name, но иерархия нужна как описано выше (как бы ступенчато).

(Отредактировано автором: 25 Октября, 2011 - 04:20:06)

 
 Top
LIME
Отправлено: 25 Октября, 2011 - 03:56:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




интересно почему подобные вопросы остаются без ответа?
ваши варианты...
 
 Top
dropoff
Отправлено: 25 Октября, 2011 - 04:00:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Вы так тонко намекнули о том, что я не понятно описал? ))
 
 Top
LIME
Отправлено: 25 Октября, 2011 - 04:10:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




да
много воды
даже неохота вникать
может когда буду трезвей
но врядли ))
(Добавление)
dropoff конкретней
сосредоточьтесь))
 
 Top
dropoff
Отправлено: 25 Октября, 2011 - 04:19:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




))

я про ORDER BY

Стандартно вывод после захода в категорию товаров идет по цене по возрастанию.
То есть: цена 10, цена 27, цена 56 и т.д...
Так же есть возможность отсортировать по имени товара ASC, DESC.

Но! У каждого товара есть статус, в котором указывается: есть ли этот товар в наличии или нет.

Так вот.
Мне нужно, чтобы товар который Есть в наличии всегда был первым в списке при любой сортировке.
Сортирую я к примеру по Названию товара и первые товары в списке те, которые есть в наличии, далее которые Под заказ, далее, которых Нет в наличии.

Это для того, чтобы товар который Есть в наличии всегда был первый. А то получается, что он разбросан по всему списку.

Надеюсь теперь понятно изложил.

зы. перечитал первый пост и понял, что погнал)
 
 Top
LIME
Отправлено: 25 Октября, 2011 - 04:23:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




судя по вашему ответу на мой пост я могу сделать вывод что вы не глупый человек
в связи с этим должен принести извенение за легкое принебрежение проявленое в моем посте
и советую конкретезировать вопрос
уж очень неохота читать так много буков))
либо переформултруйте либо сообщите что ваш вопрос требует вдумчивого чтения
обещаю помочь по мере знаний
надеюсь на правильное прочтение моего последнего поста
(Добавление)
dropoff статус это отдельное поле?
какие значения принимает?
(Добавление)
предлагаю сделать поле статус тини инт
и вывод будет ордер бай поле статуса
...детская задача
(Добавление)
индексировать статус не надо
(Добавление)
ответил?
 
 Top
dropoff
Отправлено: 25 Октября, 2011 - 04:32:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




В базе, у товара есть поле status
0 нет в наличии
1 есть в наличии
2 под заказ

но выводить ВСЕГДА нужно 1, 2, 0 именно в таком порядке.
При этом учитываю сортировку, которой может воспользоваться юзер, например по name или price
 
 Top
LIME
Отправлено: 25 Октября, 2011 - 04:32:56
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




или вам прям запрос составить? тогда давайте структуру таблицы
(Добавление)
dropoff пишет:
0 нет в наличии
1 есть в наличии
2 под заказ
смените на
2 нет в наличии
0 есть в наличии
1 под заказ
и нет проблем
(Добавление)
а хотите я завтра протрезвею мы свяжемся по скайпу и я наведу порядок в вашей базе
так будет проще
 
 Top
dropoff
Отправлено: 25 Октября, 2011 - 04:39:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




В том то и дело, что уже не сменить. Делали, через одно место.
Там загоняются товары с нужным статусом через софтину, заточенную под магаз.

Таблица такая
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `products` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `title` varchar(255) DEFAULT NULL,
  4.   `status` int(11) NOT NULL DEFAULT '0',
  5.   `price` varchar(255) DEFAULT NULL,
  6.   `url` varchar(255) DEFAULT NULL,
  7.   PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;


Я бы с удовольствием, да скайпа нет(

(Отредактировано автором: 25 Октября, 2011 - 04:42:35)

 
 Top
LIME
Отправлено: 25 Октября, 2011 - 04:47:59
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




dropoff вполне нормальная база
можете дать мне координаты я свяжусь с вами сам
обсудим выборку
не падайте духом )) тут просто на самом деле))
(Добавление)
если неоднозначная сортировка значит выведем из массива
кал вопрос
 
 Top
tuareg
Отправлено: 25 Октября, 2011 - 10:08:48
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Попробуйте так SELECT ........ ORDER BY FIELD('status', '1','2','0'),`price`;
<---->По возможности оптимизация---->
Сделайте `status` tinyint(1) NOT NULL DEFAULT '0'
Если есть возможность `price` varchar(255) DEFAULT NULL, сделайте int() и просто при вызове добавляйте 'цена '.$cena
<--->
Сделайте index по полю status и price.
 
 Top
snikers987
Отправлено: 25 Октября, 2011 - 10:44:44
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




Кто-то там вчера о вежливости писал=) Закатив глазки


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
tuareg
Отправлено: 25 Октября, 2011 - 10:45:02
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Во-первых, сделайте индекс по полю status И price.

(Отредактировано автором: 25 Октября, 2011 - 11:15:29)

 
 Top
LIME
Отправлено: 25 Октября, 2011 - 10:46:51
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




tuareg пишет:
индекс по полю status
ничего не смущает?
 
 Top
tuareg
Отправлено: 25 Октября, 2011 - 10:47:36
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




И еще Вы уверены, что при использовании Вашего способа будет использоваться индекс?
В моем, если не сортировать всю таблицу Да
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB