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

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

1. 3d_killer - 11 Декабря, 2014 - 13:35:19 - перейти к сообщению
Есть 2 запроса:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT module_catalog_property_name.name
  2.         FROM module_catalog_property_name

и
CODE (SQL):
скопировать код в буфер обмена
  1.         SELECT module_catalog_product_property_value.property
  2.         FROM module_catalog_product_property_value
  3.         LEFT JOIN module_catalog_goods_product ON
  4.                 module_catalog_goods_product.id=module_catalog_product_property_value.product  
  5.         WHERE module_catalog_goods_product.goods_id=23
  6.         GROUP BY module_catalog_product_property_value.property


первый получает все свойства которые существуют, а второй получает все свойства которые используются в товарах которые принадлежат категории с ID 23, хотелось бы получить результат состоящий из всех свойств которые существуют а во второй колонке использование (если не используется то NULL) или можно конечно 2 колонкой получить количество использования (хотя мне кажется более грузоватый запрос будет)
2. LIME - 11 Декабря, 2014 - 13:40:43 - перейти к сообщению
module_catalog_property_name должен содержать FK на module_catalog_goods_product
по нему и джойнь
для общего развития погугли EAV
(Добавление)
LIME пишет:
module_catalog_property_name должен содержать FK на module_catalog_goods_product
вру
скорее module_catalog_product_property_ value на module_catalog_property_name или наоборот
хз как там у тебя реализовано
ищи поле связи
3. 3d_killer - 11 Декабря, 2014 - 13:46:51 - перейти к сообщению
таблицы как бы связаны сейчас набросаю структуру будет понятнее
4. LIME - 11 Декабря, 2014 - 13:49:12 - перейти к сообщению
3d_killer пишет:
сейчас набросаю структуру будет понятнее
ты офигел?
ты первый раз таблицы видешь?
давай ка сам подумай через что они связаны
и EAV всеже погугли раз с ecommerce связался
там оно сплошь и рядом
кстать что за двиг?
(Добавление)
после общего прочтения об EAV
http://forum.php.su/topic.php?fo...8&topic=5211
там я создавал простенький его вариант
(Добавление)
если магента то есть статья
оно?
5. 3d_killer - 11 Декабря, 2014 - 14:00:13 - перейти к сообщению
не ну че сразу офигел Улыбка) я запрос построить не могу никак, двиг мой, схему я тоже выкладывал рисовал
[url]
http://forum.php.su/printfile.ph...;t=1011&id=1
[/url]
как связано я знаю, а вот запрос построить не получается
(Добавление)
суть такова, что при редактировании пункта каталога хочу выкинуть все свойства которые есть, которые проставлены поставить галочки из таблицы (module_catalog_property_to_catalog), а вот которые используются на товарах из этого каталога (проставлены), эти галочки залочить чтобы их снять нельзя было
6. LIME - 11 Декабря, 2014 - 14:06:17 - перейти к сообщению
3d_killer пишет:
как связано я знаю, а вот запрос построить не получается
так если схема твоя собственная то проблемы твои собственные
тыж когда схему создавал думал как запросы будут делаться?
в нормальном варианте это тупо джойны
внимательно рассмотри ссылку что я дал
там пример реализации
в принципе он такой же что и у тебя я надеюсь
атрибут связан с продуктом
значение атрибута связано с атрибутом
все просто как табурет
в чем затык?
тыж уже не первый раз в первый класс
(Добавление)
прочел добавление
это 2 запроса и не трахай нормальным людям мозг
(Добавление)
интересно может ты и пагинацию в 1 запрос решишь запаковать?
(Добавление)
надо же соображать
есть атрибуты продукта...есть остальные атрибуты
их вытянуть 1ним запросом сам господь бог не сможет
тьфу блин...еще на форум побежал
7. 3d_killer - 11 Декабря, 2014 - 14:15:56 - перейти к сообщению
LIME пишет:
интересно может ты и пагинацию в 1 запрос решишь запаковать?

нет это уже проходили там 2 запроса Улыбка
8. 3d_killer - 11 Декабря, 2014 - 14:29:31 - перейти к сообщению
можно получить нужную инфу одним запросом (пока количество выдает не правильно)
(Добавление)
в таблице checked это выбрано и count это сколько раз используется (пока не правильно)
9. LIME - 11 Декабря, 2014 - 14:37:13 - перейти к сообщению
3d_killer чувак не парься лишним запросом
делай 2 и не ... мозги
уверен это не есть горлышко бутылки
и вообще...в современном мире писать свой ecommerce это идиотизм
в магенте все уже реализовано даже то что ты и помыслить не в состоянии(спокойно я тоже не в состоянии)
маркетологи молятся на тот функционал...ты 50 лет это будешь реализовывать и всеравно будешь отставать
я не просто так говорю я сейчас какраз в магазине работаю...в нескольких...официальных от производителя..известные марки мировые...перестань велосипедить...не угонишься))
(Добавление)
и раз уж зашла у меня речь то на каждой странице у нас выполняется 200 запросов минимум...
не менее
спасает блочное и полностраничное кеширование
и это правильно с точки зрения бизнеса
заказчику глубоко положить насколько изячный ты придумал запрос
ему важно насколько ты бысто выполнишь задачу потому как он за это деньги платит
и тут кеш спасает его
понятно что надо стремиться к оптимизации но надо и понимать цели твоей работы
а твоя цель обеспечить бизнес
да?))
(Добавление)
ну и как следствие идут запросы в цикле итд итп
ит это не есть плохо...это есть реалии профессии
10. 3d_killer - 11 Декабря, 2014 - 14:52:19 - перейти к сообщению
Свойств может быть дохрена и че каждое проверять???, движок давно реализован просто добавляю кое-какой функционал и заодно это решил переписать.
По поводу того что велосипедить, пока есть спрос я делаю да и заказчики довольны понятным интерфейсом и возможностями, а так же быстродействием, пару магазинов перевел с битрикса очень довольны скоростью работы. Так что пока платят и есть спрос я работаю...
и запрос я написал:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT module_catalog_property_name.name,
  3. module_catalog_property_name.id,
  4. module_catalog_property_to_catalog.id_property AS checked,
  5. (SELECT COUNT(module_catalog_product_property_value.value)
  6.         FROM module_catalog_product_property_value
  7.         LEFT JOIN module_catalog_goods_product ON
  8.         module_catalog_goods_product.id= module_catalog_product_property_value.product
  9.         WHERE module_catalog_product_property_value.property=module_catalog_property_name.id AND module_catalog_goods_product.goods_id=22) AS count
  10.  
  11. FROM module_catalog_property_name
  12.  
  13. LEFT JOIN module_catalog_property_to_catalog ON
  14. module_catalog_property_to_catalog.id_property=module_catalog_property_name.id AND module_catalog_property_to_catalog.id_catalog=22
  15.  
  16. GROUP BY module_catalog_property_name.name
  17.                
  18.  

(Добавление)
LIME пишет:
и раз уж зашла у меня речь то на каждой странице у нас выполняется 200 запросов минимум...
вот как раз я и оптимизирую рабочее
11. 3d_killer - 11 Декабря, 2014 - 15:03:49 - перейти к сообщению
итого я получил данные свойство, ID свойства, стоит ли галочка, Сколько раз используется в продуктах из этого каталога.
Сейчас на месте галочки NULL так как перенос осуществляю с другого движка, и еще вобщем не заполнил
12. LIME - 11 Декабря, 2014 - 15:04:44 - перейти к сообщению
3d_killer пишет:
Так что пока платят и есть спрос я работаю
этого никто не отменял))
так в чем вопрос собстна?????
хочешь 1 запрос сэкономить?
иди в пень
....ой блин
сначала написал потом увидел у тебя конкретный косяк в запросе
CODE (SQL):
скопировать код в буфер обмена
  1. (SELECT COUNT(module_catalog_product_property_value.value)
  2.         FROM module_catalog_product_property_value
  3.         LEFT JOIN module_catalog_goods_product ON
  4.         module_catalog_goods_product.id= module_catalog_product_property_value.product
  5.         WHERE module_catalog_product_property_value.property=module_catalog_property_name.id AND module_catalog_goods_product.goods_id=22) AS count
этот запрос будет выполняться на каждую строку основного запроса
в смысле буквально сколько будет рядов столько раз этот подзапрос будет выполнятся
это такназываемый связаный запрос
надо объяснять что это очень хреново?
перенеси его в джойн и будет счастье
если не перенесешь я с тобой здороваться перестану и вообще тебя не знаю
13. 3d_killer - 11 Декабря, 2014 - 15:04:45 - перейти к сообщению
этот
14. LIME - 11 Декабря, 2014 - 15:06:00 - перейти к сообщению
я в смысле что подзапрос стоит в полях селекта...если не понял спроси ...хотя итак можно понять
15. 3d_killer - 11 Декабря, 2014 - 15:07:06 - перейти к сообщению
3d_killer пишет:
если не перенесешь я с тобой здороваться перестану и вообще тебя не знаю
перестань, я не знаю как селект в джоине сделать не могу пример найти вот вобще по этому поводу я тему и создавал

 

Powered by ExBB FM 1.0 RC1