![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem z wyodrębnieniem danych na podstawie zapytania łączącego dwie tabele. W uproszczeniu wyglądają one następująco: Tabela produkty:
Tabela faktury:
Chciałbym w efekcie uzyskać taki efekt: dane będą pobierane dla danego użytkownika z np. user_id=2. Wyświetlać mają się więc wszyskie produkty, poza produktami dodanym przez użytkownika sprawdzającego (WHERE produkty.user_id NOT LIKE '2'), o koszcie większym od 10000 (AND produkty.koszt>10000), o statusie aktywnym (AND produkty.status='active') - lecz tylko te produkty dla których sprawdzający użytkownik nie wystawił jeszcze faktur (wyświetlić tylko te rekordy dla których nie istnieją wpisy w tabeli faktury odpowiadające danym produktom (faktury.id) i użytkownikowi sprawdzającemu (faktury.user_id)). Problem mój polega na tym, iż nie potrafię zdefiniować ostatniej część zapytania. Tabele złączyłem poprzez LEFT OUTER JOIN faktury ON produkty.id=faktury.id Nie potrafię jednak trafnie wykorzystać np. składni WHERE NOT EXISTS aby wyfiltrować produkty bez faktur. Liczyłbym na Waszą pomoc jeśli uda Wam się zrozumieć co mam w zamyśle - choć starałem się opisać to dość precyzyjnie (IMG:style_emoticons/default/wink.gif) Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 371 Pomógł: 30 Dołączył: 14.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Czyli są warunki:
1) faktura.ad może być null 2) faktura.ad nie jest null ale wtedy id usera nie może być takie samo co id sprawdzającego 3) jeśli produkt został wcześniej dodany to ma nie być wyświetlany Dobrze rozumiem? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czyli są warunki: 1) faktura.ad może być null 2) faktura.ad nie jest null ale wtedy id usera nie może być takie samo co id sprawdzającego 3) jeśli produkt został wcześniej dodany to ma nie być wyświetlany Dobrze rozumiem? Odnośnie warunków Cytat 1) faktura.ad może być null 2) faktura.ad nie jest null ale wtedy id usera nie może być takie samo co id sprawdzającego 3) jeśli FAKTURA został wcześniej dodana PRZEZ USERA Z ID SPRAWDZAJĄCEGO to ma nie być wyświetlana 4) uzupełnienie do 3): jeśli FAKTURA (przypisana do jednego produktu), została wcześniej dodana PRZEZ USERA Z ID SPRAWDZAJĄCEGO i została dodana też przez USERA z innym ID (niestety np. warunek produkty.user_id` != '2' jest spełniony) również taki produkt nie powinien się wyświetlać Obecnie nie mam pomysłu na warunek nr 4. To jest moim zdaniem problem nie do rozwiązania poprzez obecne zapytanie MySQL, z LEFT OUTER JOIN. Męczy mnie to strasznie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 02:13 |