Sobes.tech
Junior — Middle

Ar kūrėte sudėtingus SQL užklausimus su daugybe sąlygų ir jungčių?

sobes.tech AI

Atsakymas iš AI

Taip, mano praktikoje esu kūręs sudėtingus SQL užklausimus su daugybe sąlygų ir jungčių. Tokie užklausimai dažnai naudojami gauti agreguotus duomenis iš kelių lentelių, filtruoti pagal įvairius parametrus ir optimizuoti užklausų vykdymą.

Pavyzdžiui, Node.js aplinkoje, naudojant knex biblioteką, galima sukurti užklausą su keliomis jungtimis ir sąlygomis:

const knex = require('knex')({client: 'pg'});

const query = knex('orders')
  .join('customers', 'orders.customer_id', 'customers.id')
  .leftJoin('payments', 'orders.id', 'payments.order_id')
  .where('orders.status', 'completed')
  .andWhere('payments.amount', '>', 100)
  .select('orders.id', 'customers.name', 'payments.amount')
  .toString();

console.log(query);

Ši užklausa leidžia gauti užsakymus su būsena "completed", kur mokėjimo suma didesnė nei 100, jungiant duomenis iš užsakymų, klientų ir mokėjimų lentelių.

Realiuose projektuose svarbu stebėti tokių užklausų našumą ir, jei reikia, jas optimizuoti naudojant indeksus ir vykdymo plano analizę.