Node.js MySQL'e Katılma


İki veya Daha Fazla Masaya Katılın

Bir JOIN deyimi kullanarak, iki veya daha fazla tablodaki satırları aralarındaki ilgili sütuna dayalı olarak birleştirebilirsiniz.

Bir "kullanıcılar" tablonuz ve bir "ürünler" tablonuz olduğunu düşünün:

kullanıcılar

[
  { 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:}
]

Ürün:% s

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

Bu iki tablo, kullanıcı favorite_productalanı ve ürün alanı kullanılarak birleştirilebilir id.

Örnek

Her iki tabloda da eşleşen kayıtları seçin:

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);
  });
});

Not: JOIN yerine INNER JOIN kullanabilirsiniz. İkisi de size aynı sonucu verecektir.

Yukarıdaki kodu "demo_db_join.js" adlı bir dosyaya kaydedin ve dosyayı çalıştırın:

"demo_db_join.js"yi çalıştırın

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

Hangisi size bu sonucu verecektir:

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

Yukarıdaki sonuçtan da anlaşılacağı gibi sadece her iki tabloda da eşleşen kayıtlar döndürülür.


Sol yönden katılım

Favori bir ürünü olsun ya da olmasın tüm kullanıcıları iade etmek istiyorsanız , LEFT JOIN ifadesini kullanın:

Örnek

Tüm kullanıcıları ve favori ürünlerini seçin:

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

Hangisi size bu sonucu verecektir:

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

Sağ Katıl

Tüm ürünleri ve onları favori olarak gören kullanıcılar, hiçbir kullanıcı bunları favori olarak görmese bile iade etmek istiyorsanız, RIGHT JOIN ifadesini kullanın:

Örnek

Tüm ürünleri ve favorileri olan kullanıcıyı seçin:

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

Hangisi size bu sonucu verecektir:

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

Not: Favori ürünü olmayan Hannah ve Michael sonuca dahil edilmemiştir.