MySQL
JOIN ME
Hot Dobby
2022. 9. 2. 13:32
INNER JOIN
const db_test = db("test")
db_test(`${user} as user_table`)
.join(`${food} as food_table`, "food_table.uid", "user_table.id")
.andWhere("food_name", "like", `%${kimchi_style}%`)
.select([
"food_table.uid",
"food_table.calories",
"user_table.contact"
])
가장 기본적인 교집합 참조로 JOIN하는 두 테이블에서 해당되는 값에서 select을 한 필드 값에 대해서 정보를 가져온다.
LEFT OUTER JOIN
const db_test = db("test")
db_test(`${user} as user_table`)
.leftOuterJoin(`${food} as food_table`, "food_table.uid", "user_table.id")
.andWhere("food_name", "like", `%${kimchi_style}%`)
.select([
"food_table.uid",
"food_table.calories",
"user_table.contact"
])
INNER JOIN을 많이 사용할 때의 문제점은 여러 테이블 중 단 한 개에 테이블에 ROW가 존재하지 않는다면 데이터가 리턴되지 않는다는 점 입니다. 다만 기준 테이블의 행에 조인 되는 행이 2개 이상이 되면 행이 중복으로 생기기 때문에 데이터의 무결성이 깨질 수 있는 점을 고려해야합니다. RIGHT OUTER JOIN 같은 경우 기준이 되는 테이블만 바뀐다고 생각하면 된다.
*FULL OUTER JOIN은 MySQL에선 사용할 수 가 없기 때문에 다른 JOIN으로 대체해야한다.