Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> INNER JOIN domyślnym złączeniem?
-lukasamd-
post
Post #1





Goście







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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował lukasamd 8.02.2011, 10:42:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #3





Goście







OMG... moja "spostrzegawczość" naprawdę czasami mnie poraża.
Dzięki.
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 - 16:01