A subquery hija query imlaqqda ġewwa query oħra — użata f'WHERE, FROM, SELECT, jew ma' EXISTS. Tippermettik tuża r-riżultat ta' query waħda ġewwa waħda oħra, li tippermetti filtrazzjoni u komputazzjonijiet kumplessi.
A subquery hija query imlaqqda ġewwa query oħra — użata f'WHERE, FROM, SELECT, jew ma' EXISTS. Tippermettik tuża r-riżultat ta' query waħda ġewwa waħda oħra, li tippermetti filtrazzjoni u komputazzjonijiet kumplessi.
-- find users who have placed an order (their id is in the orders table)
SELECT name FROM users
WHERE id IN (SELECT user_id FROM orders); -- the subquery returns a list of user_ids
-- find products more expensive than the average
SELECT name, price FROM products
WHERE price > (SELECT AVG(price) FROM products); -- subquery returns a single value
Subquery f'WHERE tipprovdi valuri biex tiffiltra kontruhom — lista (ma' IN) jew valur singolu (ma' operaturi ta' komparazzjoni).
-- for each user, find those with above-average orders FOR THEIR COUNTRY
SELECT name FROM users u
WHERE order_count > (
SELECT AVG(order_count) FROM users
WHERE country = u.country -- references the OUTER query's row (correlated)
);
A correlated subquery tirreferi lill-outer query — taħdem darba għal kull ringiela ta' barra (potenzjalment aktar bil-mod). Uncorrelated subquery taħdem darba.
-- users who have at least one order (often more efficient than IN)
SELECT name FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id -- just checks existence
);
EXISTS iċċekkja jekk subquery tirritorna xi ringieli — ħafna drabi aktar effizjenti minn IN għal ċekks ta' eżistenza (tista' twaqqaf fl-ewwel match).
-- use a subquery result as a table
SELECT country, avg_age FROM (
SELECT country, AVG(age) AS avg_age FROM users GROUP BY country
) AS country_stats
WHERE avg_age > 30;
Many subqueries can be rewritten as JOINs (often more efficient/readable).
WHERE id IN (SELECT ...) → can often be a JOIN
Use subqueries for clarity in filtering/aggregation; JOINs for combining data.
CTEs (WITH) are often a cleaner alternative to complex nested subqueries.
Subqueries huma teknika SQL importanti għal querying kumpleks — l-użu tar-riżultat ta' query waħda ġewwa waħda oħra tippermetti filtrazzjoni u komputazzjonijiet li simple queries ma jistgħux jesprimi, għalhekk il-fehim tagħhom huwa valwuż għall-kitba ta' queries tal-mundu reali.
Il-għarfien tal-formi — subqueries f'WHERE (filtrazzjoni bi listi ma' IN jew valur singolu ma' komparazzjonijiet), correlated subqueries (jirreferixxu lill-outer query, jaħdmu għal kull ringiela), EXISTS (ċekks ta' eżistenza effizjenti), u subqueries f'FROM (tabelli derivati) — ikopri l-mudelli komuni għall-esprezzjoni ta' lojika kumplessa.
Il-fehim tad-distinzjoni bejn correlated u uncorrelated subqueries huwa importanti għall-performance (correlated subqueries jaħdmu darba għal kull ringiela ta' barra u jistgħu jkunu bil-mod).
Ekwalment valwuż huwa l-għarfien tar-relazzjoni lill-JOINs u CTEs: ħafna subqueries jistgħu jerġgħu jiktbu bħala JOINs (ħafna drabi aktar effizjenti u leġibbli) jew CTEs (aktar nadif għal każi kumplessi), għalhekk il-fehim meta tuża kull waħda — subqueries għal filtrazzjoni/ċarezza tal-aggregazzjoni, JOINs għal kombinazzjoni ta' data — huwa abilità prattika.
Billi real-world queries ħaftu jridu nnesting (filtrazzjoni b'riżultati aggregati, ċekks ta' eżistenza, komparazzjoni lil valuri komputati), u billi il-fehim ta' subqueries, il-karatteristiċi tal-performance tagħhom (speċjalment dawk correlated), u r-relazzjoni tagħhom lill-JOINs/CTEs huwa importanti għall-kitba ta' queries kumplessi effizjenti u effettivi, il-master ta' subqueries huwa għarfien valwuż u spiss-applikat għal SQL barra minn querying bażiku u subgett ta' intervista komuni li juri abilità biex tesprimi rekwiżiti ta' data kumplessi.