Node.js MySQL Připojte se


Připojte se ke dvěma nebo více stolům

Pomocí příkazu JOIN můžete kombinovat řádky ze dvou nebo více tabulek na základě souvisejícího sloupce mezi nimi.

Zvažte, že máte tabulku „uživatelů“ a tabulku „produktů“:

uživatelů

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

produkty

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

Tyto dvě tabulky lze kombinovat pomocí pole uživatele favorite_producta pole produktů id.

Příklad

Vyberte záznamy se shodou v obou tabulkách:

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

Poznámka: Místo JOIN můžete použít INNER JOIN. Obě vám poskytnou stejný výsledek.

Uložte výše uvedený kód do souboru s názvem „demo_db_join.js“ a spusťte soubor:

Spusťte "demo_db_join.js"

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

Což vám dá tento výsledek:

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

Jak můžete vidět z výsledku výše, vrátí se pouze záznamy se shodou v obou tabulkách.


Připojit se vlevo

Pokud chcete vrátit všechny uživatele, bez ohledu na to, zda mají oblíbený produkt nebo ne, použijte příkaz LEFT JOIN:

Příklad

Vyberte všechny uživatele a jejich oblíbený produkt:

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

Což vám dá tento výsledek:

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

Správně Připojte se

Pokud chcete vrátit všechny produkty a uživatele, kteří je mají jako své oblíbené, i když je žádný uživatel nemá jako své oblíbené, použijte příkaz RIGHT JOIN:

Příklad

Vyberte všechny produkty a uživatele, kteří je mají jako oblíbené:

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

Což vám dá tento výsledek:

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

Poznámka: Hannah a Michael, kteří nemají žádný oblíbený produkt, nejsou do výsledku zahrnuti.