![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 4.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cześć
Mam problem, mam trzy tabele products, products_translations, products_pack products_translations id | name ------------------------- 1 - Normal-1 2 - Normal-2 3 - Normal-3 4 - Pack ============= products_pack id_product_pack | id_product_item ------------------------ 4 - 1 4 - 2 4 - 3 Poniżej zapytanie, które ma pokazać czy produkt o ID 1, 2 lub 3 jest podpięty do produktu 4.
Zapytanie wyświetla się prawidłowo tylko dla pierwszego wyniku
A powinno pokazać dla 3 pierwszych wyników na końcu 1 - gdzie zrobiłem błąd ? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dołącz tabelę products_pack przez LEFT JOIN zamiast w FROM. Teraz wszystkie wiersze z obu tabel są łączone na zasadzie każdy z każdym. Jak usuniesz GROUP BY to zobaczysz, że IF działa poprawnie, ale tylko dla połączeń, w których identyfikatory się pokrywają. Ponieważ stosujesz GROUP BY wyświetlany jest pierwsze połączenie z brzegu, co nie oznacza, że identyfikatory się będą pokrywać. Jeśli przeniesiesz dołączanie tabeli products_pack do LEFT JOIN, w tedy będziesz mógł połączyć tylko te wiersze, których identyfikatory się pokrywają i w kolumnie active będziesz miał wynik, którego oczekujesz.
-------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 06:44 |