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으로 대체해야한다.