Node.jsMySQL結合_
2つ以上のテーブルを結合する
JOINステートメントを使用して、2つ以上のテーブルの行を、それらの間の関連する列に基づいて組み合わせることができます。
「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
これらの2つのテーブルは、ユーザーのフィールドと製品のフィールド
を使用して組み合わせることができます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の代わりにINNERJOINを使用できます。どちらも同じ結果になります。
上記のコードを「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' }
]
上記の結果からわかるように、両方のテーブルで一致するレコードのみが返されます。
左結合
お気に入りの製品があるかどうかに関係なく、すべてのユーザーを返す場合は、LEFTJOINステートメントを使用します。
例
すべてのユーザーとそのお気に入りの製品を選択します。
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 }
]
右結合
すべての製品、およびそれらをお気に入りとして持っているユーザーを返したい場合は、それらをお気に入りとして持っているユーザーがいない場合でも、RIGHTJOINステートメントを使用します。
例
すべての製品とそれらをお気に入りとして持っているユーザーを選択します。
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' }
]
注:お気に入りの商品がないハンナとマイケルは、結果に含まれていません。