Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie tabel left join
Forum PHP.pl > Forum > Bazy danych > MySQL
Archon_1
Witam mam taki problem. Kiedy wykonuje polecenie sql w phpmyadminie o takiej treści
Kod
select klienci.klientid,  klienci.nazwisko
from klienci left join zamowienia
using(klientid)
where zamowienia.zamowienieid is null;

To nie pojawiaja mi sie żadne rekordy. Dlaczego?? Czy trzeba coś poprzestawiać w konfiguracji??
nospor
najwyrażniej warunek nie jest spelniony dla zadnego rekordy, czyli każde zamowienie ma przypisanego klienta
Archon_1
Warunek jest spełniony bo jest to przykład z książki php i MySQl Tworzenie stron www
SongoQ
A gdzie sie podzialo zlaczenie?
popbart
@SongoQ USING jest złączeniem
@nospor raczej każdy klient ma zamówienie smile.gif
@Archon_1 dodaj nowego klienta i wykonaj jescze raz selecta
nospor
@popbart nie, raczej zamowienie ma klienta. KLienci bez zamowien mogą sie obyć, ale zamowienie bez klienta to raczej nie. Samo się nie zamówi

@Archon_1
Cytat
Warunek jest spełniony bo jest to przykład z książki php i MySQl Tworzenie stron www
A baze masz taką samą jak oni? he? Ja nie negowalem ze masz zle zapytanie (ono skladniowo jest ok) ino że twoja baza nie spelnia jego warunków
popbart
@nospor
Zapytanie
  1. SELECT klienci.klientid, klienci.nazwisko
  2. FROM klienci LEFT JOIN zamowienia USING (klientid)
  3. WHERE zamowienia.zamowienieid IS NULL

powinno zwrócić wszystkich klientów którzy nie mają zamówień.
Jeżeli nic nie zwraca, to znaczy że albo nie ma żadnych klientów, albo każdy ma choć jedno zamówienie.
Sh4dow
Albo mnie sie wydaje albo czegos mi tutaj brakuje ?
No bo wybierasz wszystkich klientow, gdzie ich zamowienia sa rowne NULL. Ale nie masz miedzy tablicami polaczenia chyba? bo ten using jakos ni jak ma sie to tego.
  1. SELECT k.klientid, k.nazwisko
  2. FROM klienci AS k
  3. LEFT JOIN zamowienia AS z ON z.klientid = k.klientid
  4. WHERE z.zamowienieid IS NULL


chociaz nie zawachal bym sie tego zrobic bez JOIN'a

  1. SELECT k.klientid, k.nazwisko
  2. FROM klienci AS k, zamowienia AS z
  3. WHERE z.klientid = k.klientid AND z.zamowienieid IS NULL


mam jedynie nadzieje ze przewidzialem jak jest zaprojektowana ta baza. aaevil.gif

=:]P
SongoQ
Cytat
Ale nie masz miedzy tablicami polaczenia chyba? bo ten using jakos ni jak ma sie to tego.

No wlasie USING tak laczy.
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.