Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] LEFT JOIN
Forum PHP.pl > Forum > Przedszkole
adi456
Witam, pomoże ktoś ogarnąć zapytanie bo kombinuje i coś mi nie wychodzi

chce osiągnąć coś takiego:
  1. SELECT * FROM zamowienia_towar
  2. LEFT JOIN zamowienia_towar_sklepy ON zamowienia_towar.id=zamowienia_towar_sklepy.id_zt AND (zamowienia_towar_sklepy.sklep_id='16' or zamowienia_towar_sklepy.sklep_id='17')
  3. WHERE zamowienia_towar.dostawca LIKE '%$dostawca%'
  4. GROUP BY zamowienia_towar_sklepy.id_zt
  5. HAVING COUNT(*) != '2'
  6.  


czyli wyciągnąć towar który nie ma przypisanego 2 x "id_zt" ale coś mi nie wychodzi, czy to zapytanie jest poprawne?
Forti
Jakiś błąd dostajesz konkretny?
adi456
nie ma błędu, poprostu nie dostaje wyniku

dodam jeszcze że odwrotność tzn
  1. SELECT * FROM zamowienia_towar
  2. LEFT JOIN zamowienia_towar_sklepy ON zamowienia_towar.id=zamowienia_towar_sklepy.id_zt AND (zamowienia_towar_sklepy.sklep_id='16' or zamowienia_towar_sklepy.sklep_id='17')
  3. WHERE zamowienia_towar.dostawca LIKE '%$dostawca%'
  4. GROUP BY zamowienia_towar_sklepy.id_zt
  5. HAVING COUNT(*) = '2'


wyświetla 819 z 831 czyli pierwszy przykład powinien wywalić 12 rekordów

już wyświetla się te 12 rekordów
źle grupowałem zamiast "GROUP BY zamowienia_towar_sklepy.id_zt" ma być "GROUP BY zamowienia_towar.id"

tyle że jakby nie działa to "AND (zamowienia_towar_sklepy.sklep_id='16' or zamowienia_towar_sklepy.sklep_id='17')" ponieważ gdy do zapytania dodam "count(zamowienia_towar_sklepy.id_zt) as ile" to ile powinno zawierać 0 lub 1 a zwiera też więklsze liczby pomimo tego że 1 sklep_id posiada tylko 1 id_zt


okazało się że błąd jest w innym miejscu i 1 sklep_id posiada może posiadać więcej niż 1 id_zt tak więc problem rozwiązany dziękuje za zainteresowanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.