![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 3.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Jestem raczej poczatkujący w mysql. Mam mały problem: Mam tabele w której mam pola id_produkt i id_atrybut. W której przypisuje do produktu atrybut. Każdy produkt może mieć kilka atrybutów. czyli id_produkt może wystąpić kilkukrotnie. Teraz na podstawie zaznaczonych w wyszukiwarce opcji (atrybutow) chciałbym wybrac odpowiednie id_produktu spełniające wszystkie zaznaczone założenia. I tutaj pojawia się problem;/ z formularza dostaje tablice $atrybuty rozbijam ją na stringa $atr = implode(", ", $atrybuty); probowałem tak ():
ale baza zwraca bład przy ALL na próbę probowałem ANY ale ten sam bład. Tak jak by w nawias nie można było wsadzić cyfr tylko podzapytanie. Probowałem też przerobić to zapytanie:
Ale Z AND nie daje wyników dla więcej niz jednej opcji a z OR nie filtruje wystarczjąco. Będę wdzięczny za jakąś podpowiedź. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 3.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ale robiąc z IN znowu dostaję za dużo wynikow.
Na przykład: Mam produkt ktory ma atrybuty: zielony, żółty i drugi produkt o atrybutach zielony, niebieski. Przy wyborze zielonego zwraca 2 wyniki i to jest ok ale jesli zaznaczy sie wybór zielony i zółty to nadal zwraca 2 wyniki a powinien tylko 1 :/ Dodałem HAVING SELECT id_produkt FROM produkt_atrybut WHERE id_atrybut IN ($atr) GROUP BY id_produkt HAVING COUNT(id_produkt) = count($atrybuty); Niby zwarca teraz dobrze ale musze to jescze potestowac. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 16:39 |