Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Wyświetlanie dostępnych produktów (rozwiązany)
tomekpl
post 24.02.2020, 14:09:33
Post #1





Grupa: Zarejestrowani
Postów: 134
Pomógł: 5
Dołączył: 9.08.2008
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cześć,
Mam zagwozdkę z multizapytaniem mysql.

W skrócie chcę wyświetlać listę produktów, których podprodukty mają stan magazynowy minium 1.


Przykładowa tabela:
products

id | product_id
1 | null
2 | 1
3 | 1
4 | null
5 | 4
6 | 4
7 | null
8 | 7
9 | 7

stock:
id | product_id | amount
1 | 2 | 0
2 | 3 | 1
3 | 5 | 2
4 | 6 | 3
5 | 8 | 0
6 | 9 | 0


Chciałbym wyciągnąć z tej tabeli wyświetlanie głównych produktów, których warianty mają amount > 0


Aktualnie zapytanie wygląda tak:
Brakuje tylko wywietlania produktów, których stany magazynowe wariantów będą na minimum 1

  1. SELECT `products`.*
  2. FROM `products`
  3. WHERE ((`category_id`=23) OR (`add_category_hash` LIKE '%23%') OR (`category_id`=57) OR (`add_category_hash` LIKE '%57%') OR (`category_id`=58) OR (`add_category_hash` LIKE '%58%') OR (`category_id`=59) OR (`add_category_hash` LIKE '%59%') OR (`category_id`=60) OR (`add_category_hash` LIKE '%60%') OR (`category_id`=61) OR (`add_category_hash` LIKE '%61%') OR (`category_id`=62) OR (`add_category_hash` LIKE '%62%') OR (`category_id`=63) OR (`add_category_hash` LIKE '%63%') OR (`category_id`=64) OR (`add_category_hash` LIKE '%64%') OR (`category_id`=65) OR (`add_category_hash` LIKE '%65%') OR (`category_id`=66) OR (`add_category_hash` LIKE '%66%') OR (`category_id`=67) OR (`add_category_hash` LIKE '%67%') OR (`category_id`=68) OR (`add_category_hash` LIKE '%68%')) AND (`products`.`is_active` = 1) AND (`products`.`parent_id` IS NULL) AND (`products`.`price_netto` BETWEEN 0 AND 99999) AND (`products`.`price_brutto` BETWEEN 0 AND 99999) AND ((`products`.`id` IN (
  4. SELECT `parent_id`
  5. FROM `products`
  6. WHERE `products`.`id` IN (
  7. SELECT `product_id`
  8. FROM `variants_hash`
  9. WHERE (`variant_id` = '104') AND (`variants_hash`.`product_id` IN (
  10. SELECT `product_id`
  11. FROM `bwcms_xmod_shop_stocks`
  12. WHERE (`variant_id` = '104') AND (`amount` > 0)))))) OR (`products`.`id` IN (
  13. SELECT `product_id`
  14. FROM `products_variants`
  15. WHERE `variant_id` = '104')))
  16. ORDER BY `id`
  17. LIMIT 16


Problem rozwiązany, może komuś się przyda.
Jako SELECT w głównym zapytaniu napisałem podzapytanie, które sumuje warianty i wyświetla daną ilość dla całej grupy.
Chyba, że można zrobić prościej to chętnie o tym porozmawiam smile.gif

  1. SELECT `products_list`.*,(
  2. SELECT SUM(amount)
  3. FROM `stocks` s
  4. WHERE `product_id` IN (
  5. SELECT `id`
  6. FROM `products_list` `list`
  7. WHERE (`is_active`=1) AND (`parent_id`=`products_list`.id))) AS `amount`
  8. FROM `products_list`
  9. WHERE ((`category_id`=23) OR (`add_category_hash` LIKE '%23%') OR (`category_id`=57) OR (`add_category_hash` LIKE '%57%') OR (`category_id`=58) OR (`add_category_hash` LIKE '%58%') OR (`category_id`=59) OR (`add_category_hash` LIKE '%59%') OR (`category_id`=60) OR (`add_category_hash` LIKE '%60%') OR (`category_id`=61) OR (`add_category_hash` LIKE '%61%') OR (`category_id`=62) OR (`add_category_hash` LIKE '%62%') OR (`category_id`=63) OR (`add_category_hash` LIKE '%63%') OR (`category_id`=64) OR (`add_category_hash` LIKE '%64%') OR (`category_id`=65) OR (`add_category_hash` LIKE '%65%') OR (`category_id`=66) OR (`add_category_hash` LIKE '%66%') OR (`category_id`=67) OR (`add_category_hash` LIKE '%67%') OR (`category_id`=68) OR (`add_category_hash` LIKE '%68%')) AND (`products_list`.`is_active` = 1) AND (`products_list`.`parent_id` IS NULL) AND (`products_list`.`price_netto` BETWEEN 0 AND 99999) AND (`products_list`.`price_brutto` BETWEEN 0 AND 99999)
  10. HAVING `amount` > 0
  11. ORDER BY `id`
  12. LIMIT 16


Ten post edytował tomekpl 24.02.2020, 14:10:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 03:08