Loading [MathJax]/extensions/tex2jax.js
Ask Your Question
0

SQL CROSS JOIN

asked Dec 14 '14

gandalf gravatar image

Ahojte, nevedel by ma niekto posunut resp. inspirovat nejak, ako vyuzit v nejakom dotaze kartezsky sucin? Neviem na to vobec nic vymysliet. Dakujem

add a comment

1 Answer

Sort by » oldest newest most voted
1

answered Dec 14 '14

Josef Kokeš gravatar image

updated Dec 14 '14

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;
link

Comments

Aha, ano islo presne o to, ze som nechapal k comu to je dobre spojit vsetko so vsetkym. Predpokladam, ze tie tri dotazy, co ste dali su ekvivalentne, potom je to uplne lahke. Dakujem :) EDIT: Aha, nie su ekvivalentne, jasne uz chapem.

gandalf (Dec 14 '14)

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.

Josef Kokeš (Dec 14 '14)
add a comment

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

Add answer

[hide preview]

Question tools

Follow
1 follower

Stats

Asked: Dec 14 '14

Seen: 9,273 times

Last updated: Dec 14 '14