Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: INNER JOIN domyślnym złączeniem?
Forum PHP.pl > Forum > Bazy danych
lukasamd
Witam,
mam pytanie odnośnie złączeń, w których nie podajemy jawnie sposobu - czy jest to wtedy domyślnie INNER JOIN?

Ostatnio miałem problem, tzn. na zapytanie:
  1. SELECT u.username, f.*
  2. FROM users u, FIELDS f
  3. WHERE f.field_name = 'Testowe'
  4. AND f.uid = u.user_id
  5. LIMIT 1025, 25

nie było żadnych wyników, chociaż po ręcznym sprawdzeniu okazywało się, że niby wszystko jest w porządku i wyniki jak najbardziej powinny być.
Dotarło jednak do mnie, że są tam zapisane uid userów, którzy już faktycznie nie istnieją i nie ma ich w tabeli users - w wyniku tego LIMIT 1025 tracił sens, bo wszystko było "przesunięte w dół".
Prawdziwe wyniki dla tej wartości pojawiły się dopiero po ustawieniu LIMIT na 930.
Tymczasem spróbowałem tak:

  1. SELECT u.username, f.*
  2. FROM users u
  3. LEFT JOIN FIELDS f ON (f.uid = u.user_id)
  4. WHERE f.field_name = 'Testowe'
  5. LIMIT 1025, 25


No i jak ręką odjął!
Z tego wnioskuję, że INNER JOIN jest domyślnym typem łączenia jeżeli nie podamy innego, tak jak w pierwszym przypadku.
No chyba że jest jeszcze jakiś "smaczek" o którym nie wiem, a z chęcią się dowiem aby rozwiać wątpliwości smile.gif
nospor
Nie chodzi o jakies domyslne złączenie ale o warunek.
Przecież dales:
WHERE f.uid = u.user_id
jesli wiec jakies rekordy nie spelniają tego warunku to nie są zwracane - proste.
lukasamd
OMG... moja "spostrzegawczość" naprawdę czasami mnie poraża.
Dzięki.
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.