Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] Ach te standarty, czy to to samo?
Forum PHP.pl > Forum > Bazy danych
Jabol
Mam takie pytanie. Właśnie kupiłem sobie książkę o SQL'u i czytam o złączeniach.
Skorzystam z tabeli tych tabel do przedstawienia problemu:
Cytat
- klient - [id].[nazwa]
- faktura - [id].[data_wystawienia].[id_klienta]

Mam takie pytanie, czy to są te polecenia robią to samo?
Pierwsze:
Kod
SELECT

    klient.id id,

    klient.name imie,

    faktury.data_wystawienia data

FROM

    klient,

    faktury

WHERE

    klient.id=faktury.id_klienta

Drugie:
Kod
SELECT

    klient.id id,

    klient.name imie,

    faktury.data_wystawienia data

FROM

    klient

LEFT JOIN

    faktura  ON (faktura.id=klient.id)
Co dziwniejsze z mojej wiedzy wynika (tak słyszałem), że JOIN jest tylko pojęciem i że pierwszy przykład jest "bardziej" SQL'owy.
A tak wogóle to mam jeszcze jedno pytanie. Czy chcąc dokonać lewego złączenia zewnętrznego z użyciem słówka JOIN powinienem napisać
Kod
OUTER LEFT JOIN
czy
Kod
LEFT OUTER JOIN
questionmark.gif
DeyV
1. Według manuala WHERE jest równoznaczne z OUTER JOIN
2. Pisz tak, jak działa winksmiley.jpg
uboottd
Cytat
Pierwsze:
Kod
SELECT

    klient.id id,

    klient.name imie,

    faktury.data_wystawienia data

FROM

    klient,

    faktury

WHERE    klient.id=faktury.id_klienta


wypisze tylko tych klientow, ktorzy _maja_ jakakolwiek fakture, w wyniku nie pojawia sie zadni klienci nie posiadajacych wpisow w fakturach

Cytat
Drugie:
Kod
SELECT

    klient.id id,

    klient.name imie,

    faktury.data_wystawienia data

FROM

    klient

LEFT JOIN

    faktura  ON (faktura.id=klient.id)


Wypisze _wszystkich_ klientow, dla klientow posiadajacych faktury rowniez dane tych faktur, dla klientow bez faktur wypisze dane klienta i zamiast danych faktur da wartosc NULL
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.