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]   

> Описание: Помогите составить запрос
3d_killer
Отправлено: 19 Ноября, 2013 - 14:08:07
Post Id



Участник


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


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




вот что я написал:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM table_product
  2.                 LEFT JOIN table_product_to_product ON  
  3.                 table_product_to_product.id_product_one!=:id_articul AND table_product_to_product.id_product_two!=table_product.id
  4.                 WHERE table_product.parent=0 AND table_product.model LIKE :search
  5.  

Нужно выбрать все столбцы из таблицы table_product где колонка parent=0 и колонка model содержит часть поискового запроса search исключая значения другой таблицы
table_product_to_product где table_product_to_product.id_prod uct_two=table_product.id и при этом вторая колонка данной таблицы table_product_to_product.id_product_one=:id_articul
текущему продукту

Другими словами есть таблица со всеми продуктами и есть таблица с продуктами в комплект вот мне нужно чтобы товары состоящие в комплекте уже данного продукта в поиске не отображались

(Отредактировано автором: 19 Ноября, 2013 - 14:10:48)

 
My status
 Top
3d_killer
Отправлено: 19 Ноября, 2013 - 18:22:39
Post Id



Участник


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


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




что никто не знает?
 
My status
 Top
teddy
Отправлено: 19 Ноября, 2013 - 18:57:29
Post Id


Участник


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


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




может и знает... только задача если честно не очень понятная
для начала могу предложить добавить
CODE (SQL):
скопировать код в буфер обмена
  1. LIKE CONCAT('%',:search,'%')

(Отредактировано автором: 19 Ноября, 2013 - 19:24:36)

 
 Top
3d_killer
Отправлено: 19 Ноября, 2013 - 19:51:12
Post Id



Участник


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


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




таблица продуктов table_product
id | parent | model

таблица связаных продуктов table_product_to_product
id_product_one | id_product_two



например
table_product
id | parent | model
1 | 0 | A1
2 | 0 | A2
3 | 0 | A3
4 | 0 | A4
5 | 0 | A5
6 | 0 | A6
7 | 0 | A7

table_product_to_product
1 | 2
1 | 3
1 | 4
5 | 1
5 | 2

Это значит что товару 1 соответствуют товары 2,3,4
товару 5 соответствуют товары 1 и 2

допустим поисковое слово A нахожусь в редактировании 1 товара

нужно: чтобы высветились товары (исключая уже которые есть привязки) то есть 5,6,7

так понятнее объяснил?
 
My status
 Top
teddy
Отправлено: 19 Ноября, 2013 - 20:42:17
Post Id


Участник


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


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




если учитывать что первого поста не было, то можно попробовать так
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM table_product LEFT JOIN table_product_to_product ON table_product.id!=table_product_to_product.id_product_one WHERE table_product.parent=0 AND table_product.model LIKE CONCAT('%',:search,'%') GROUP BY table_product.model

а то в первом сообщении есть :id_articul значение которого мне неизвестно а гадать к сожалению не умею...
 
 Top
3d_killer
Отправлено: 19 Ноября, 2013 - 20:49:45
Post Id



Участник


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


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




допустим поисковое слово A нахожусь в редактировании 1 товара
1 товар и есть :id_articul
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 19 Ноября, 2013 - 21:22:00
Post Id



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


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


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




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT tp.*
  2.   FROM table_product_to_product ptp
  3.   INNER JOIN table_product tp
  4.     ON tp.id = ptp.id_product_two
  5.   WHERE ptp.id_product_one IN (
  6.     SELECT id FROM table_product WHERE parent = 0 AND model LIKE '%search%'
  7.   ) AND tp.id  NOT IN (
  8.     SELECT id FROM table_product WHERE parent = 0 AND model LIKE '%search%'
  9.   )

штото похожее на правду сварганил, не проверял.
 
 Top
3d_killer
Отправлено: 20 Ноября, 2013 - 18:34:17
Post Id



Участник


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


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




ну что то все равно мне выдает значение которое уже есть
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB