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
Форумы портала PHP.SU :: Версия для печати :: Помогите составить запрос
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Помогите составить запрос

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

1. 3d_killer - 19 Ноября, 2013 - 14:08:07 - перейти к сообщению
вот что я написал:

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
текущему продукту

Другими словами есть таблица со всеми продуктами и есть таблица с продуктами в комплект вот мне нужно чтобы товары состоящие в комплекте уже данного продукта в поиске не отображались
2. 3d_killer - 19 Ноября, 2013 - 18:22:39 - перейти к сообщению
что никто не знает?
3. teddy - 19 Ноября, 2013 - 18:57:29 - перейти к сообщению
может и знает... только задача если честно не очень понятная
для начала могу предложить добавить
CODE (SQL):
скопировать код в буфер обмена
  1. LIKE CONCAT('%',:search,'%')
4. 3d_killer - 19 Ноября, 2013 - 19:51:12 - перейти к сообщению
таблица продуктов 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

так понятнее объяснил?
5. teddy - 19 Ноября, 2013 - 20:42:17 - перейти к сообщению
если учитывать что первого поста не было, то можно попробовать так
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 значение которого мне неизвестно а гадать к сожалению не умею...
6. 3d_killer - 19 Ноября, 2013 - 20:49:45 - перейти к сообщению
допустим поисковое слово A нахожусь в редактировании 1 товара
1 товар и есть :id_articul
7. DeepVarvar - 19 Ноября, 2013 - 21:22:00 - перейти к сообщению
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.   )

штото похожее на правду сварганил, не проверял.
8. 3d_killer - 20 Ноября, 2013 - 18:34:17 - перейти к сообщению
ну что то все равно мне выдает значение которое уже есть

 

Powered by ExBB FM 1.0 RC1