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:
SELECT u.username, f.* FROM users u, FIELDS f WHERE f.field_name = 'Testowe' AND f.uid = u.user_id 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:
SELECT u.username, f.* FROM users u LEFT JOIN FIELDS f ON (f.uid = u.user_id) WHERE f.field_name = 'Testowe' 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
