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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: сложно однако
V2oD2o
Отправлено: 26 Марта, 2013 - 12:21:37
Post Id


Частый гость


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


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




Не понял

Получаем ID товара, расколупываем его полные данные из нескольких таблиц:

PHP:
скопировать код в буфер обмена
  1. $query="SELECT `wheel_vendor`.`vendor_id`,
  2.                 `wheel_vendor`.`vendor_url`,
  3.                 `wheel_vendor`.`vendor_name`,
  4.                 `wheel_model`.`model_id`,
  5.                 `wheel_model`.`model_url`,
  6.                 `wheel_model`.`model_name`,
  7.                 `wheel_model_size`.`width` AS `p_width`,
  8.                 `wheel_model_size`.`radius` AS `p_radius`,
  9.                 `wheel_model_size`.`pcd_first` AS `pcd_1`,
  10.                 `wheel_model_size`.`pcd_second` AS `pcd_2`,
  11.                 `wheel_model_size`.`dia` AS `p_dia`,
  12.                 `wheel_model_size`.`et` AS `p_et`
  13.         FROM `wheel_model_size`
  14.                 INNER JOIN `wheel_model` ON `wheel_model_size`.`model_id`=`wheel_model`.`model_id`
  15.                 INNER JOIN `wheel_vendor` ON `wheel_model`.`vendor_id`=`wheel_vendor`.`vendor_id`
  16.         WHERE `size_id`='".$fullmodel_id."'";



Ищем цену по детальным данным товара:
PHP:
скопировать код в буфер обмена
  1. $query="SELECT `cost` FROM `price_wheels`
  2.         WHERE `width`='".substr_lastsymbol($width)."'
  3.                 AND `pcd_1`='".substr_lastsymbol($pcd_1)."'
  4.                 AND `pcd_2`='".substr_lastsymbol($pcd_2)."'
  5.                 AND `dia`='".substr_lastsymbol($dia)."'
  6.                 AND `et`='".substr_lastsymbol($et)."'
  7.                 AND `radius`='".$radius."'
  8.                 AND `vendor`='".$vendor."'
  9.                 AND `fullname` LIKE '%".$model."%'";


а как одним запросом задолбится сразу и по полному описанию и еще цену вытащить?

Несколько раз можно входить INNER'ом в одну и ту же таблицу по разным полям?
INNER JOIN `price_wheels` ON `wheel_model_size`.`pcd_1`=`price_wheels`.`pcd_1`
INNER JOIN `price_wheels` ON `wheel_model_size`.`pcd_2`=`price_wheels`.`pcd_2`
INNER JOIN `price_wheels` ON `wheel_model_size`.`dia`=`price_wheels`.`dia`
INNER JOIN `price_wheels` ON `wheel_model_size`.`et`=`price_wheels`.`et`

???

просто нет возможности сейчас попробовать..

(Отредактировано автором: 26 Марта, 2013 - 12:23:23)

 
 Top
caballero
Отправлено: 26 Марта, 2013 - 12:31:53
Post Id


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


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


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




Цитата:
Несколько раз можно входить INNER'ом в одну и ту же таблицу по разным полям?

можно, только у таблицы алиасы разные должны быть


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
V2oD2o
Отправлено: 26 Марта, 2013 - 12:34:30
Post Id


Частый гость


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


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




Причем надо как то сделать чтоб этот select выдавал результат даже если цены - нет
 
 Top
caballero
Отправлено: 26 Марта, 2013 - 12:36:40
Post Id


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


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


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




left join


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
V2oD2o
Отправлено: 26 Марта, 2013 - 12:39:43
Post Id


Частый гость


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


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




А не бывает что то вроде?

PHP:
скопировать код в буфер обмена
  1. $query="SELECT `wheel_vendor`.`vendor_id`,
  2.                 `wheel_vendor`.`vendor_url`,
  3.                 `wheel_vendor`.`vendor_name`,
  4.                 `wheel_model`.`model_id`,
  5.                 `wheel_model`.`model_url`,
  6.                 `wheel_model`.`model_name`,
  7.                 `wheel_model_size`.`width` AS `p_width`,
  8.                 `wheel_model_size`.`radius` AS `p_radius`,
  9.                 `wheel_model_size`.`pcd_first` AS `pcd_1`,
  10.                 `wheel_model_size`.`pcd_second` AS `pcd_2`
  11.                 `cost` IN (
  12.                         SELECT `cost` FROM `price_wheels`
  13.                            WHERE `width`='".substr_lastsymbol($width)."'
  14.                            AND `pcd_1`='".substr_lastsymbol($pcd_1)."'
  15.                 .....................
  16.                             AND `fullname` LIKE '%".$model."%'
  17.                 ) AS `p_cost`
  18.  

(Отредактировано автором: 26 Марта, 2013 - 12:45:30)

 
 Top
imya
Отправлено: 26 Марта, 2013 - 13:52:39
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Почему не бывает? Подзапрос в запросе...


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
LIME
Отправлено: 26 Марта, 2013 - 14:01:35
Post Id


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


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


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




не бывает
IN только в клаузуле

(Отредактировано автором: 26 Марта, 2013 - 14:01:59)

 
 Top
V2oD2o
Отправлено: 26 Марта, 2013 - 14:50:50
Post Id


Частый гость


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


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




уж больно лагает, надо что то думать..

по запросу находится в среднем 80-100 позиций, а в цикле искать цену на них - это просто дикость..
База малюсенькая ~120 тысяч позиций, а некоторые запросы выполняются >3..4 секунд
 
 Top
LIME
Отправлено: 26 Марта, 2013 - 15:09:53
Post Id


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


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


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




индексы стоят?
 
 Top
V2oD2o
Отправлено: 27 Марта, 2013 - 10:11:57
Post Id


Частый гость


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


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




LIME пишет:
индексы стоят?


Нет, дай почитать?
вся халупа в том что я даже отсортировать по цене не могу..

(Отредактировано автором: 27 Марта, 2013 - 10:12:53)

 
 Top
LIME
Отправлено: 27 Марта, 2013 - 10:13:31
Post Id


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


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


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




(Отредактировано автором: 27 Марта, 2013 - 10:15:40)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB