prawidłowe zapytanie do bazy

0

Mam taką tabele łączoną

tabela.jpg

Pytanie. Jak wyciągnąć te rekordy których id_pdp = 4 i 26 (powinie wyświetlić id_art 1 i 3)

A np. podając id_pdp = 4 i 26 i 6 (powinie wyświetlić już tylko id_art 1).

Mam takie zapytanie ale ono nie działa tak jak bym chciał (pobiera tylko id_pdp=4)

SELECT artykuly.id_art,artykuly.nazwa_art,
parametry_dodatkowe_podkat.nazwa,
parametry_dodatkowe_podkat.id_pdp,
pdp_artykuly_lacznik.id_kat
FROM artykuly,parametry_dodatkowe_podkat,pdp_artykuly_lacznik
WHERE parametry_dodatkowe_podkat.id_pdp=pdp_artykuly_lacznik.id_pdp
AND pdp_artykuly_lacznik.id_art=artykuly.id_art
AND pdp_artykuly_lacznik.id_pdp=4 AND 26

Ktoś pomoże?

1

To tak nie zadziała:

 pdp_artykuly_lacznik.id_pdp=4 AND 26

Po pierwsze używasz logicznego i po drugie nie wskazujesz kolumny dla wartości 26.
Czyli jeśli chcesz otrzymywać rekordy gdzie coś ma wartość X lub Y ( 26 lub 4) musisz użyć OR
No i dla każdego parametru musisz wskazać kolumnę.
Możesz też użyć where in ()

0

Próbuję teraz tak:
AND parametry_dodatkowe_podkat.id_pdp=4 AND parametry_dodatkowe_podkat.id_pdp=6 AND parametry_dodatkowe_podkat.id_pdp=26
i zwraca pusty rekord a powinienem otrzymać id_art 1

0

A masz rekord gdzie kolumna pdp ma wartość jednocześnie 26 i jednocześnie6 i jednocześnie 4 ?
Szukasz wierszy gdzie kolumna pdp ma wartość 26 albo 6 albo 4.

0

Na pewno taki mam

tabela.jpg

To TV Sony 1 (id_art=1). I chodzi mi właśnie o pobranie tego rekordu.

1

To pierwsza rzecz, którą musisz ogarnąć: podstawy logiki: różnice między AND a OR.

Druga rzecz: różnice między rekordem w tabeli (wiersz), a kolumną (wartości danego pola).

Póki co mylisz trochę pojęcia.

0

Wiem, że AND to i a OR to lub. I właśnie dlatego używam AND bo chcę wyciągnąć jeden rekord, który w kolumnie id_pdp zawiera 4,26,6.

0

Z tego co przedstawiłeś szukasz nie jednego rekordu a trzech. Jak zakreślałeś to pdp to w ilu wierszach?
Zobacz https://www.w3schools.com/sql/sql_in.asp i
https://www.w3schools.com/sql/sql_and_or.asp

1
kris_76 napisał(a):

Wiem, że AND to i a OR to lub. I właśnie dlatego używam AND bo chcę wyciągnąć jeden rekord, który w kolumnie id_pdp zawiera 4,26,6.

Czyli nie rozumiesz xD

0

Dopiero się uczę mysql i może mylę pewne rzeczy. Ale ogólnie odpowiedź na swoje pytanie znalazłem tu:
https://www.elektroda.pl/rtvforum/topic720741.html
Rozwiązane.

0

Rozwiązanie, które znalazłeś na elektrodzie jest poprawne. :)
Ale teraz zapisz je dla id_pdp IN (4,26,54,88,14,67,13,5,200,1250,12345) :)
https://dbfiddle.uk/?rdbms=mysql_5.6&fiddle=e87a24ba6b2b9637ec8902e47e224055

1 użytkowników online, w tym zalogowanych: 0, gości: 1