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_product
alanı 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.