Witam,
Uczę się języka SQL i mam nurtujące pytanie. Najlepiej wytłumaczę je na przykładzie: Stwórzmy 2 relację (PostgreSQL):
CREATE TABLE utwory
(
id serial PRIMARY KEY NOT NULL,
jezyki_id integer NOT NULL,
CONSTRAINT stanowiska_fk FOREIGN KEY (jezyki_id)
REFERENCES jezyki (id)
)
oraz
CREATE TABLE jezyki
(
id serial PRIMARY KEY NOT NULL,
nazwa character varying(50),
)
Tabelę języki wypełniam dwoma językami 1- polski 2-angielski.
INSERT INTO JEZYKI (NAZWA) VALUES ('POLSKI');
INSERT INTO JEZYKI (NAZWA) VALUES ('ANGIELSKI')
W tabeli utwory tworzę cztery utwory.
INSERT INTO UTWORY (JEZYKI_ID) VALUES (1);
INSERT INTO UTWORY (JEZYKI_ID) VALUES (2);
INSERT INTO UTWORY (JEZYKI_ID) VALUES (2);
INSERT INTO UTWORY (JEZYKI_ID) VALUES (1)
Teraz jeżeli użyję:
SELECT * FROM UTWORY
To dostanę coś w stylu 1-1 1-2 3-2 4-1
Natomiast jeżeli użyję kodu:
SELECT UTWORY.ID,JEZYKI.NAZWA FROM UTWORY INNER JOIN JEZYKI ON UTWORY.JEZYKI_ID = JEZYKI.ID
To uzyskam pożądany efekt. Tylko czy to zawsze musi działać na takiej zasadzie - używania JOIN? Pytam bo brak mi doświadczenia w tym temacie, może jest jakiś szybszy mechanizm?