Node.js MySQL Join

Node.js ஐப் பயன்படுத்தி MySQL இல் இரண்டு அல்லது அதற்கு மேற்பட்ட அட்டவணைகளை இணைக்க கற்றுக்கொள்ளுங்கள்

இரண்டு அல்லது அதற்கு மேற்பட்ட அட்டவணைகளை இணைத்தல்

அவற்றுக்கிடையேயான தொடர்புடைய நெடுவரிசையின் அடிப்படையில், இரண்டு அல்லது அதற்கு மேற்பட்ட அட்டவணைகளிலிருந்து வரிசைகளை JOIN அறிக்கையைப் பயன்படுத்தி இணைக்கலாம்.

உங்களிடம் "users" அட்டவணை மற்றும் "products" அட்டவணை உள்ளது என்று கருதுங்கள்:

users அட்டவணை

[
  { 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: null},
  { id: 5, name: 'Michael', favorite_product: null}
]

products அட்டவணை

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

இந்த இரண்டு அட்டவணைகளும் users' favorite_product புலம் மற்றும் products' id புலத்தைப் பயன்படுத்தி இணைக்கப்படலாம்.

எடுத்துக்காட்டு

இரண்டு அட்டவணைகளிலும் பொருந்தும் பதிவுகளைத் தேர்ந்தெடுக்கவும்:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  let 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 க்கு பதிலாக INNER JOIN ஐப் பயன்படுத்தலாம். இரண்டும் உங்களுக்கு ஒரே முடிவைத் தரும்.

மேலே உள்ள குறியீட்டை "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' }
]

மேலே உள்ள முடிவிலிருந்து நீங்கள் பார்க்க முடியும் என, இரண்டு அட்டவணைகளிலும் பொருந்தும் பதிவுகள் மட்டுமே திருப்பி அனுப்பப்படுகின்றன.

💡 JOIN முக்கிய குறிப்புகள்:

  • INNER JOIN: இரண்டு அட்டவணைகளிலும் பொருந்தும் பதிவுகள் மட்டுமே
  • தொடர்பு: ON கூற்று இணைக்கும் நிபந்தனையைக் குறிப்பிடுகிறது
  • அலியாஸ்: AS மூலம் நெடுவரிசை பெயர்களை மாற்றியமைக்கலாம்
  • பல அட்டவணைகள்: பல அட்டவணைகளை இணைக்கலாம்

Left Join

அவர்களுக்கு பிடித்த தயாரிப்பு இருந்தாலும் இல்லையாலும், அனைத்து பயனர்களையும் திருப்பி அனுப்ப விரும்பினால், LEFT JOIN அறிக்கையைப் பயன்படுத்தவும்:

எடுத்துக்காட்டு

அனைத்து பயனர்களையும் அவர்களின் பிடித்த தயாரிப்பையும் தேர்ந்தெடுக்கவும்:

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 }
]

LEFT JOIN

இடது அட்டவணையின் அனைத்து பதிவுகளும் + வலது அட்டவணையில் பொருந்தும் பதிவுகள்

  • முதல் அட்டவணையின் அனைத்து வரிசைகளும்
  • இரண்டாம் அட்டவணையில் பொருந்தும் வரிசைகள்
  • பொருந்தாதவை NULL ஆக இருக்கும்

Right Join

அனைத்து தயாரிப்புகளையும், அவற்றை தங்களுக்கு பிடித்ததாகக் கொண்ட பயனர்களையும், எந்த பயனரும் அவற்றை தங்களுக்கு பிடித்ததாகக் கொள்ளாவிட்டாலும் கூட, திருப்பி அனுப்ப விரும்பினால், RIGHT JOIN அறிக்கையைப் பயன்படுத்தவும்:

எடுத்துக்காட்டு

அனைத்து தயாரிப்புகளையும் அவற்றை தங்களுக்கு பிடித்ததாகக் கொண்ட பயனர்களையும் தேர்ந்தெடுக்கவும்:

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' }
]

குறிப்பு: பிடித்த தயாரிப்பு இல்லாத Hannah மற்றும் Michael ஆகியோர் முடிவில் சேர்க்கப்படவில்லை.

RIGHT JOIN

வலது அட்டவணையின் அனைத்து பதிவுகளும் + இடது அட்டவணையில் பொருந்தும் பதிவுகள்

  • இரண்டாம் அட்டவணையின் அனைத்து வரிசைகளும்
  • முதல் அட்டவணையில் பொருந்தும் வரிசைகள்
  • பொருந்தாதவை NULL ஆக இருக்கும்

JOIN வகைகள் ஒப்பீடு

JOIN வகை விளக்கம் வரைபடம் பயன்பாடு
INNER JOIN இரண்டு அட்டவணைகளிலும் பொருந்தும் பதிவுகள் மட்டுமே குறுக்குவெட்டு தொடர்புடைய தரவை மட்டும் தேவைப்படும் போது
LEFT JOIN இடது அட்டவணையின் அனைத்து பதிவுகள் + வலது அட்டவணையில் பொருந்தும் பதிவுகள் இடது வென்படம் முதன்மை அட்டவணையின் அனைத்து பதிவுகளும் தேவைப்படும் போது
RIGHT JOIN வலது அட்டவணையின் அனைத்து பதிவுகள் + இடது அட்டவணையில் பொருந்தும் பதிவுகள் வலது வென்படம் இரண்டாம் அட்டவணையின் அனைத்து பதிவுகளும் தேவைப்படும் போது
FULL OUTER JOIN இரண்டு அட்டவணைகளின் அனைத்து பதிவுகளும் (MySQL இல் இல்லை) முழு ஒன்றியம் இரண்டு அட்டவணைகளின் அனைத்து தரவும் தேவைப்படும் போது

மேம்பட்ட JOIN எடுத்துக்காட்டுகள்

மூன்று அட்டவணைகளை இணைத்தல்

// Join three tables: users, orders, products
let sql = `
  SELECT 
    users.name AS customer,
    products.name AS product,
    orders.quantity,
    orders.order_date
  FROM users
  INNER JOIN orders ON users.id = orders.user_id
  INNER JOIN products ON orders.product_id = products.id
  ORDER BY orders.order_date DESC
`;

con.query(sql, function (err, result) {
  if (err) throw err;
  console.log("Three table join result:", result);
});

குழுவாக்கத்துடன் JOIN

// JOIN with GROUP BY and aggregation
let sql = `
  SELECT 
    users.name AS customer,
    COUNT(orders.id) AS total_orders,
    SUM(orders.amount) AS total_spent
  FROM users
  LEFT JOIN orders ON users.id = orders.user_id
  GROUP BY users.id, users.name
  ORDER BY total_spent DESC
`;

con.query(sql, function (err, result) {
  if (err) throw err;
  console.log("Customer order summary:", result);
});

துணை வினாவுடன் JOIN

// JOIN with subquery
let sql = `
  SELECT 
    users.name,
    recent_orders.order_count
  FROM users
  LEFT JOIN (
    SELECT user_id, COUNT(*) as order_count
    FROM orders 
    WHERE order_date >= '2023-01-01'
    GROUP BY user_id
  ) recent_orders ON users.id = recent_orders.user_id
`;

con.query(sql, function (err, result) {
  if (err) throw err;
  console.log("Users with recent order counts:", result);
});

JOIN சிறந்த நடைமுறைகள்

செயல்திறன்

  • குறியீட்டு நெடுவரிசைகளில் JOIN செய்யவும்
  • தேவையான நெடுவரிசைகளை மட்டும் தேர்ந்தெடுக்கவும்
  • சிக்கலான JOIN க்கு WHERE கூற்றுகளைப் பயன்படுத்தவும்
  • பெரிய அட்டவணைகளுக்கு LIMIT ஐப் பயன்படுத்தவும்

தரவு ஒருமைப்பாடு

  • வெளிநாட்டு விசை உறவுகளைச் சரிபார்க்கவும்
  • சரியான JOIN வகையைத் தேர்ந்தெடுக்கவும்
  • NULL மதிப்புகளைக் கையாளவும்
  • தரவு தொடர்புகளைப் புரிந்துகொள்ளவும்

குறியீடு தரம்

  • அலியாஸ்களைப் பயன்படுத்தி நெடுவரிசை பெயர்களைத் தெளிவுபடுத்தவும்
  • சிக்கலான JOIN க்கு வடிவமைக்கவும்
  • வாசிப்புக்காக வினாக்களை வடிவமைக்கவும்
  • நிலையான குறியீட்டு மரபுகளைப் பின்பற்றவும்

முழுமையான எடுத்துக்காட்டு

அனைத்து JOIN நுட்பங்களையும் உள்ளடக்கிய முழுமையான எடுத்துக்காட்டு:

const mysql = require('mysql');

// Create connection
const con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "password",
  database: "company_db"
});

// Connect to MySQL
con.connect((err) => {
  if (err) {
    console.error('Error connecting to MySQL:', err.message);
    return;
  }
  
  console.log('Connected to MySQL database');
  
  // Example 1: INNER JOIN
  console.log('\n1. INNER JOIN - Users with favorite products:');
  con.query(`
    SELECT users.name AS user, products.name AS favorite 
    FROM users 
    INNER JOIN products ON users.favorite_product = products.id
  `, (err, result) => {
    if (err) {
      console.error('Error in INNER JOIN:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 2: LEFT JOIN
  console.log('\n2. LEFT JOIN - All users with their favorite products:');
  con.query(`
    SELECT users.name AS user, products.name AS favorite 
    FROM users 
    LEFT JOIN products ON users.favorite_product = products.id
  `, (err, result) => {
    if (err) {
      console.error('Error in LEFT JOIN:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 3: RIGHT JOIN
  console.log('\n3. RIGHT JOIN - All products with users who favorited them:');
  con.query(`
    SELECT users.name AS user, products.name AS favorite 
    FROM users 
    RIGHT JOIN products ON users.favorite_product = products.id
  `, (err, result) => {
    if (err) {
      console.error('Error in RIGHT JOIN:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 4: Multiple table JOIN
  console.log('\n4. Three table JOIN - Users, orders, and products:');
  con.query(`
    SELECT 
      u.name AS customer,
      p.name AS product,
      o.quantity,
      o.order_date
    FROM users u
    INNER JOIN orders o ON u.id = o.user_id
    INNER JOIN products p ON o.product_id = p.id
    ORDER BY o.order_date DESC
    LIMIT 5
  `, (err, result) => {
    if (err) {
      console.error('Error in three table JOIN:', err.message);
      return;
    }
    console.log(result);
    
    // Close connection
    setTimeout(() => {
      con.end((err) => {
        if (err) {
          console.error('Error closing connection:', err.message);
          return;
        }
        console.log('\nConnection closed');
      });
    }, 1000);
  });
});

பயிற்சி

அவற்றுக்கிடையேயான தொடர்புடைய நெடுவரிசையின் அடிப்படையில் இரண்டு அல்லது அதற்கு மேற்பட்ட அட்டவணைகளிலிருந்து வரிசைகளை இணைக்க பயன்படுத்தப்படும் சரியான SQL அறிக்கையைத் தேர்ந்தெடுக்கவும்.

COMBINE
✗ தவறு! "COMBINE" என்பது MySQL இல் ஒரு செல்லுபடியாகும் SQL அறிக்கை அல்ல
MERGE
✗ தவறு! "MERGE" என்பது MySQL இல் ஒரு செல்லுபடியாகும் SQL அறிக்கை அல்ல
JOIN
✓ சரி! "JOIN" என்பது தொடர்புடைய நெடுவரிசையின் அடிப்படையில் இரண்டு அல்லது அதற்கு மேற்பட்ட அட்டவணைகளிலிருந்து வரிசைகளை இணைக்க பயன்படும் சரியான SQL அறிக்கையாகும்
LINK
✗ தவறு! "LINK" என்பது MySQL இல் ஒரு செல்லுபடியாகும் SQL அறிக்கை அல்ல