Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как избавится от OR в запросе?

Сообщения:  [1-10]   [11-12] 

 
 автор: LO   (16.09.2009 в 15:03)   письмо автору
 
   для: LO   (16.09.2009 в 13:38)
 

Я думаю, что все-таки лучший вариант с OR как и было изначально. Но вот только надо поработать качественно с индексами.
Это конечно ускорит, но не намного ( вобщем буду пробовать, ковырять

Всем спасибо за советы

  Ответить  
 
 автор: Trianon   (16.09.2009 в 14:46)   письмо автору
 
   для: LO   (16.09.2009 в 14:31)
 

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

  Ответить  
 
 автор: LO   (16.09.2009 в 14:31)   письмо автору
 
   для: cheops   (16.09.2009 в 14:26)
 

ну, там другие поля учитываются, типо price_id и т.п

  Ответить  
 
 автор: Trianon   (16.09.2009 в 14:30)   письмо автору
 
   для: cheops   (16.09.2009 в 13:50)
 

И останутся только продукты , фигурирующие лишь в обоих срезах прайса сразу.

Здесь скорее подойдет
SELECT COUNT(id) 
  FROM ...  
  WHERE id IN( 
    SELECT product_id 
      FROM prices 
      WHERE ...
  )

  Ответить  
 
 автор: cheops   (16.09.2009 в 14:26)   письмо автору
 
   для: LO   (16.09.2009 в 13:37)
 

А почему таблица prices используется два раза, причем формирование каждый раз идет одинаково? Что кроется в троеточиях?

  Ответить  
 
 автор: LO   (16.09.2009 в 13:56)   письмо автору
 
   для: cheops   (16.09.2009 в 13:50)
 

так если после первого джоина не будет резутьтатов, то мне уже несчем будет второй джоин делать. Т.е в результате я получу 0, даже если в pl2 были результаты

например, как из первого поста после лефт джоинов у меня был бы такой результат (пусть пока без каунта, а просто записи)
f1 |  f2  |  f3
---------------
1  |   1   | 1
2  | null  | 2
3  |   3   | null
4  | null  | null


то после иннер джоинов
f1 |  f2  |  f3
---------------
1  |   1   | 1
3  |   3   | null


верней, даже
f1 |  f2  |  f3
---------------
1  |   1   | 1


а мне нужно
f1 |  f2  |  f3
---------------
1  |   1   | 1
2  | null  | 2
3  |   3   | null

  Ответить  
 
 автор: cheops   (16.09.2009 в 13:50)   письмо автору
 
   для: LO   (16.09.2009 в 13:37)
 

Хм... а если просто отказаться от LEFT JOIN, заменив его на обычный JOIN - зачем вам продукты без соответствия в таблице prices? А лишние NULL это уберет.

  Ответить  
 
 автор: LO   (16.09.2009 в 13:38)   письмо автору
 
   для: cheops   (16.09.2009 в 13:29)
 

очень замедляет запрос

  Ответить  
 
 автор: LO   (16.09.2009 в 13:37)   письмо автору
 
   для: cheops   (16.09.2009 в 13:27)
 

есть две таблицы

products 
------------
product_id


и

prices
--------
product_id
price_id
price


во второй таблице хранится ай-ди прайслиста и сама цена (ну, понятно, что структура таблиц приведена для упрощения)

запрос примерно следующий

select count(p.id)
from products p
left join prices pl1 on (p.product_id=pl1.product_id AND pl1.price > 1 ...)
left join prices pl2 on (p.product_id=pl2.product_id AND pl2.price > 1 ...)
where (вот здесь нужен какое-то условие, чтоб отсечь продукты у которых цена не подходит не из одного прайс-листа, т.е где оба они is null)
GROUP BY p.id


т.е. мне нужно кол-во продуктов, цена которых меня удовлетворяет хотя бы в одном из прайс-листов.

  Ответить  
 
 автор: cheops   (16.09.2009 в 13:29)   письмо автору
 
   для: LO   (16.09.2009 в 13:24)
 

А почему OR невозможно испльзовать? Из-за AND? Если да, то условия с OR можно взять в скобки.

  Ответить  

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования