Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z join left
Forum PHP.pl > Forum > Bazy danych
buliq
Mam zapytanie pobierające dane z tabeli konta_majatek i sklep. Chodzi mi o to żeby np. jak użytkownik o nazwie lol kupi sprzet1 ze sklepu to juz nie bedzie wyswietlany w sklepie.
Struktura konta_majatek:
id, nazwa(nazwa z tabeli sklep), cena(cena z tabeli sklep), idsklep(id z tabeli sklep), login,
Struktura sklep:
id, nazwa, cena,

Mam teraz taki kod:
  1. SELECT *
  2. FROM sklep s
  3. LEFT JOIN konta_majatek km ON s.id != km.idsklep
  4. WHERE km.login = 'lol' AND s.id != km.idsklep


Pomocy próbowałem już wszystkiego
Jarod
Próbowałeś zamiast LEFT JOIN z INNER JOIN ?
buliq
Niestety ale nie pomogło. Dalej to samo :/

Zapomniałem dodać że rekordy się podwajają lub potrajają czyli wyświetlają się kilka razy
Jarod
  1. SELECT * FROM sklep LEFT JOIN km ON sklep.id = km.sklep_id WHERE login IS NULL;


Utworzyłem sobie takie tabele jak podałeś, trochę inne nazwy i sprawdziłem. Jeśli dobrze zrozumiałem o co chodzi to powyższe zapytanie działa. Tylko jak możesz to wytłumacz dokładnie co chcesz osiągnąć? Bo dla mnie struktura tych tabeli jest bez sensu. Poczytaj o normalizacji bazy danych.
buliq
No więc zrobiłem coś takiego:
  1. SELECT *
  2. FROM `sklepy` WHERE id NOT
  3. IN (
  4. SELECT idsklep
  5. FROM `konta_majatek` WHERE login = 'lol'
  6. )


I działa. Opłacało się pomyśleć. Jednak dziękuję ci Jarod i dam ci plusika.
Jarod
@buliq: podzapytania są wolniejsze. To, które Ci podałem też działa.
kubel-junior
jak robisz left joina to przy warunku "on" pole z dodawanej tabeli musi być po lewej stronie równania.
Poza tym bez sensu dołączać kilka pól z innej tabeli, 1 zasada normalizacji.
czyli jak masz
select m.cos, s.cos_wiecej
from magazyn m
left join sklep on s.id=m.cos_wiecej_id
itd..
Pozdro
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.