Node.js MySQL 조인


두 개 이상의 테이블 조인

JOIN 문을 사용하여 둘 이상의 테이블 간의 관련 열을 기반으로 행을 결합할 수 있습니다.

"users" 테이블과 "products" 테이블이 있다고 가정합니다.

사용자

[
  { id: 1, name: 'John', favorite_product: 154},
  { id: 2, name: 'Peter', favorite_product: 154},
  { id: 3, name: 'Amy', favorite_product: 155},
  { id: 4, name: 'Hannah', favorite_product:},
  { id: 5, name: 'Michael', favorite_product:}
]

제품

[
  { id: 154, name: 'Chocolate Heaven' },
  { id: 155, name: 'Tasty Lemons' },
  { id: 156, name: 'Vanilla Dreams' }
]

이 두 테이블은 사용자 favorite_product필드와 제품 필드 를 사용하여 결합할 수 있습니다 id.

예시

두 테이블에서 일치하는 레코드를 선택하십시오.

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT users.name AS user, products.name AS favorite FROM users JOIN products ON users.favorite_product = products.id";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

참고: JOIN 대신 INNER JOIN을 사용할 수 있습니다. 둘 다 같은 결과를 줄 것입니다.

위의 코드를 "demo_db_join.js"라는 파일에 저장하고 파일을 실행합니다.

"demo_db_join.js" 실행

C:\Users\Your Name>node demo_db_join.js

다음과 같은 결과를 얻을 수 있습니다.

[
  { user: 'John', favorite: 'Chocolate Heaven' },
  { user: 'Peter', favorite: 'Chocolate Heaven' },
  { user: 'Amy', favorite: 'Tasty Lemons' }
]

위의 결과에서 알 수 있듯이 두 테이블 모두에서 일치하는 레코드만 반환됩니다.


왼쪽 조인

선호하는 제품이 있든 없든 모든 사용자 를 반환 하려면 LEFT JOIN 문을 사용합니다.

예시

모든 사용자와 좋아하는 제품 선택:

SELECT users.name AS user,
products.name AS favorite
FROM users
LEFT JOIN
products ON users.favorite_product = products.id

다음과 같은 결과를 얻을 수 있습니다.

[
  { user: 'John', favorite: 'Chocolate Heaven' },
  { user: 'Peter', favorite: 'Chocolate Heaven' },
  { user: 'Amy', favorite: 'Tasty Lemons' },
  { user: 'Hannah', favorite: null },
  { user: 'Michael', favorite: null }
]

오른쪽 조인

모든 제품과 해당 제품을 즐겨찾기로 갖고 있는 사용자를 반환하려면 사용자가 즐겨찾기로 갖고 있지 않더라도 RIGHT JOIN 문을 사용합니다.

예시

모든 제품과 해당 제품을 즐겨찾기로 설정한 사용자를 선택하십시오.

SELECT users.name AS user,
products.name AS favorite
FROM users
RIGHT JOIN
products ON users.favorite_product = products.id

다음과 같은 결과를 얻을 수 있습니다.

[
  { user: 'John', favorite: 'Chocolate Heaven' },
  { user: 'Peter', favorite: 'Chocolate Heaven' },
  { user: 'Amy', favorite: 'Tasty Lemons' },
  { user: null, favorite: 'Vanilla Dreams' }
]

참고: 선호하는 상품이 없는 Hannah와 Michael은 결과에 포함되지 않습니다.