SQL CROSS JOIN
Ahojte, nevedel by ma niekto posunut resp. inspirovat nejak, ako vyuzit v nejakom dotaze kartezsky sucin? Neviem na to vobec nic vymysliet. Dakujem
Ahojte, nevedel by ma niekto posunut resp. inspirovat nejak, ako vyuzit v nejakom dotaze kartezsky sucin? Neviem na to vobec nic vymysliet. Dakujem
Abych řekl pravdu, připadá mi obtížné najít příklad, ve kterém by se kartézský součin nepoužil - jde o jednu z nejběžnějších operací.
V zadání semestrálky nebo co děláte jste určitě měli i požadavek na nějaký vztah M:N, ne? Každý výběr, který bude chtít údaje z obou entit, použije cross-join. Uvažujte například entity FILM a HEREC a dotaz "Chci všechny herce, kteří se objevili ve filmu X". Nebo CLANEK a OBRAZEK a dotaz "Chci všechny obrázky, které byly zobrazené u článků, které mají v názvu slovo 'FIT' " (předpokládám něco jako iDNES, kde se jeden ilustrační obrázek dá k libovolnému množství článků). Nebo třeba STUDENT, PREDMET a ZNAMKA a dotaz "Chci průměrnou známku za BI-DBS v roce 2014".
EDIT: Možná už chápu, o co vám jde: Kartézský součin se téměř vždy používá s nějakou omezující podmínkou. Čistý kartézský součin bez podmínky moc běžný není. No a ten omezený součin se dá zrovna tak dobře zapsat CROSS JOINem (explicitním nebo implicitním) jako INNER JOINem:
SELECT * FROM tab1, tab2 WHERE tab1.pole1=tab2.pole2;
SELECT * FROM tab1 CROSS JOIN tab2 WHERE tab1.pole1=tab2.pole2;
SELECT * FROM tab1 JOIN tab2 ON tab1.pole1=tab2.pole2;
Výsledek je ekvivalentní, ale může se lišit optimalizace provádění prvních dvou dotazů a toho třetího. Odlišný výsledek by dal OUTER JOIN
(LEFT nebo RIGHT) místo JOIN
ve třetím příkladu.
Asked: 2014-12-14 16:18:24 +0100
Seen: 9,273 times
Last updated: Dec 14 '14