Node.js MySQL Sluit aan


Sluit aan by twee of meer tafels

Jy kan rye van twee of meer tabelle kombineer, gebaseer op 'n verwante kolom tussen hulle, deur 'n JOIN-stelling te gebruik.

Oorweeg jy het 'n "gebruikers"-tabel en 'n "produkte"-tabel:

gebruikers

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

produkte

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

Hierdie twee tabelle kan gekombineer word deur gebruikers se favorite_productveld en produkte se idveld te gebruik.

Voorbeeld

Kies rekords met 'n passing in beide tabelle:

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

Let wel: Jy kan INNER JOIN in plaas van JOIN gebruik. Hulle sal albei vir jou dieselfde resultaat gee.

Stoor die kode hierbo in 'n lêer genaamd "demo_db_join.js" en hardloop die lêer:

Begin "demo_db_join.js"

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

Wat vir jou hierdie resultaat sal gee:

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

Soos u uit die resultaat hierbo kan sien, word slegs die rekords met 'n passing in beide tabelle teruggestuur.


Links Sluit aan

As jy alle gebruikers wil terugstuur , maak nie saak of hulle 'n gunstelingproduk het of nie, gebruik die LINKERSLUITING-stelling:

Voorbeeld

Kies alle gebruikers en hul gunsteling produk:

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

Wat vir jou hierdie resultaat sal gee:

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

Reg Sluit aan

As jy alle produkte wil terugstuur, en die gebruikers wat dit as hul gunsteling het, selfs al het geen gebruiker dit as hul gunsteling nie, gebruik die REGTE JOIN-stelling:

Voorbeeld

Kies alle produkte en die gebruiker wat dit as hul gunsteling het:

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

Wat vir jou hierdie resultaat sal gee:

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

Let wel: Hannah en Michael, wat geen gunstelingproduk het nie, is nie by die resultaat ingesluit nie.