Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Połączenie kategorii z produktami w tym wybór pustych
Salvation
post
Post #1





Grupa: Zarejestrowani
Postów: 403
Pomógł: 72
Dołączył: 15.07.2014

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


Witam.
To znowu ja smile.gif
W tym temacie Temat: Many to many SELECT uzyskałem satysfakcjonująca mnie odpowiedź i rozwiązałem problem. Niestety przyszedłem do was dzisiaj z podobnym problem, ale raczej w kwestii czysto merytorycznej, a mianowicie:
- posiadam sobie taki oto wycinek z bazy danych:


Wynika z tego tyle, że dany product może być przypisany do kategorii i/lub podkategorii. Podam przykład:

CODE
- kategoria Pizza:
----- produkt
----- produkt
- kategoria Napoje:
----- produkt
--- podkategoria Drinki:
----- produkt
----- produkt
--- podkategoria Alkohole
----- produkt

Następnie, po ponownym przejrzeniu tego poradnika: http://nospor.pl/grupowanie-wynikow.html tym razem zastosowałem grupowanie w PHP. Stanąłem na zapytaniu do bazy danych, które wygląda tak:
  1. $sql = "SELECT c.`id_category` cid, IFNULL(c.`master_category`, 0) cmc, c.`name` cname, c.`nr_queue` cq, "
  2. . "p.`id_product` pid, p.`name` pname, p.`nr_queue` pq, p.`price_min` ppmin, p.`price_max` ppmax, "
  3. . "p.`size_min` psmin, p.`size_max` psmax, p.`size_type` pstype, "
  4. . "IF(p.`discount_time` > NOW(), p.`discount`, 0) pdiscount, "
  5. . "t.`name` tname, t.`color` tcolor "
  6. . "FROM `categories` c "
  7. . "LEFT JOIN `products` p ON p.`id_category` = c.`id_category` "
  8. . "LEFT JOIN `types` t ON t.`id_type` = p.`id_type` "
  9. . "WHERE c.`visible` = '1' AND p.`visible` = '1' "
  10. . "ORDER BY cmc, cq, pq, pname";

Cały problem jest w tym, że wynik zwraca tylko kategorie z produktami. "Błąd" znalazłem z klauzuli WHERE - bez niej, wyniki są takie jakie oczekiwałem, czyli zwrot nawet pustych kategorii. Czy ktoś wie dlaczego tak to działa a nie inaczej i gdzie jest błąd w moim rozumowaniu?
Z góry dzięki za jakiekolwiek wskazówki.

PS. kolumna `visible` odpowiada za widoczność kategorii czy produktu na stronie, więc jest potrzebna w zapytaniu.

Ten post edytował Salvation 9.11.2016, 14:34:03
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No skoro ustawiles dla productu
AND p.`visible` = '1'
no to skoro produkt nie istnieje to logiczne ze nie ma =1 wiec warunek nie jest spelniony
powinno byc
AND (p.visible is NULL or p.`visible` = '1' )


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 21.08.2025 - 05:07