Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] WHERE EXISTS, WHERE NOT EXISTS
tr86
post
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

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


Mam pytanie odnośnie zapytania MySQL.

Chcę pobrać klientów z tabeli 'cards', którzy NIE mają zamówienia w tabeli 'orders'.
Oto kod:
  1. $zapytanie = mysql_query ("SELECT * FROM cards c WHERE NOT EXISTS
  2. (SELECT * FROM orders o WHERE c.przypisano_do = '".$_SESSION['login']."' AND c.id = o.id_card) ORDER BY `data_utworzenia` DESC")
  3. or die('błąd: '.mysql_error());


Niestety powyższe zapytanie nie działa, bo wypisuje mi wszystkich klientów bez zamówień, ale nie uwzględnia
do kogo przypisany jest klient ----> WHERE c.przypisano_do = '".$_SESSION['login']."'


Dodam jeszcze, że pobranie klientów z zamówieniami działa poprawnie.
Poniżej kod:
  1. $zapytanie = mysql_query ("SELECT * FROM cards c WHERE EXISTS
  2. (SELECT * FROM orders o WHERE c.przypisano_do = '".$_SESSION['login']."' AND c.id = o.id_card) ORDER BY `data_utworzenia` DESC")
  3. or die('bla…d: '.mysql_error());



Jakieś porady?
Z góry dziękuję.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Noidea
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Zamień podzapytanie na LEFT JOINa. Powinno to wyglądać mniej więcej tak:
  1. SELECT c.*
  2. FROM cards c
  3. LEFT JOIN orders o ON ( c.id = o.id_card )
  4. WHERE o.id_card IS NULL AND c.przypisano_do = '" . $_SESSION['login'] . "'
  5. ORDER BY data_utworzenia DESC

(dla klientów z zamówieniami będzie IS NOT NULL)

Ten post edytował Noidea 22.03.2011, 15:16:56
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Raczej na joina niż na left joina. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Proszę o poprawienie tytułu.
Go to the top of the page
+Quote Post
tr86
post
Post #5





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 10.10.2009
Skąd: Dąbrowa Górnicza

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


Dziękuję bardzo. O to chodziło.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 08:30