SQL JOIN



LEFT JOIN
--左側の条件値がnullまたは右側の場合、条件値を減らしながら左側joinをインポート
生活コードのビデオを見て、机を3つ作って、joinを勉強しました.
https://www.youtube.com/watch?v=pJqBR2TNe24&t=80s
-- DATA BASE 만들기
CREATE DATABASE join_prac;

USE join_prac;

SHOW TABLES;

CREATE TABLE topic (
	`tid` INT NOT NULL,
	`title` CHAR(20) DEFAULT NULL,
    `description` CHAR(50) DEFAULT NULL,
    `author_id` INT DEFAULT NULL
);

SHOW TABLES;

SELECT * FROM topic;

INSERT INTO topic
VALUES ('4','ORACLE','ORACLE is...', NULL);

CREATE TABLE profile (
	`pid` INT NOT NULL,
	`title` CHAR(20) DEFAULT NULL,
    `description` CHAR(50) DEFAULT NULL
);

SHOW TABLES;


INSERT INTO profile
VALUES ('3','DBA', 'DBA is...');


SELECT * FROM
`profile`;

-- topic table을 기준으로 on 뒤에 조건
-- topic.author_id 와 오른쪽의 aid가 같은 짝으로
-- 데이터가 마치 뒤에 붙어서 기차같이? 출력된다
-- topic.author_id가 null인 row는 뒤에 null로 따라 붙는다
-- 왼쪽의 조건값이 null 이면 그것을 감소하면서 가져오는게 left join
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.ai
3つのテーブルを接続
-- topic.author_id = profile.pid; 조건에 맞게 profile table이 옆에 또 붙는다
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid
LEFT JOIN profile ON topic.author_id = profile.pid;  

-- JOIN으로 SELECT하고 원하는 정보만 가져오기
-- title이란 column 명이 겹치므로  topic.title, profile.title 이런식으로 출처를 붙여준다
-- as 로 고유의 column명으로 가져올 수 있음
SELECT tid, topic.title, author_id, profile.title AS job_title FROM topic LEFT JOIN author ON topic.author_id = author.aid
LEFT JOIN profile ON topic.author_id = profile.pid;  
SELECT tid, topic.title, city ,author_id, name, profile.title AS job_title FROM topic LEFT JOIN author ON 
topic.author_id = author.aid LEFT JOIN profile ON author.profile_id = profile.pid WHERE name = 'egoing';
INNER JOIN
LEFTJOINと異なり、LEFT条件値がNULLの場合、そのROWは出力されません
SELECT * FROM topic INNER JOIN author ON topic.author_id = author.aid;