|
![]() | Dotazy | Specifikace dotazu | ![]() |
zobecn∞nß tabulka ::= { identifikßtor_tabulky [ specifikace_indexu ] | identifikßtor_ulo₧enΘho_dotazu | ( dotazov²_v²raz ) | join } [ p°ejmenovßnφ ]
specifikace_indexu ::= INDEX jmΘno_indexu
join ::= zobecn∞nß_tabulka druh_joinu zobecn∞nß_tabulka [ specifikace_joinu ]
druh_joinu ::= CROSS JOIN | [ NATURAL ] [ INNER | { LEFT | RIGHT | FULL } [ OUTER ] ] JOIN
specifikace_joinu ::= ON podmφnka | USING ( nßzev_sloupce { , nßzev_sloupce }à)
p°ejmenovßnφ ::= [ AS ] jmΘno [( jmΘno_sloupce { , jmΘno_sloupce }à)]
Pojem zobecn∞nß tabulka definuje, kterΘ objekty mohou v jazyce SQL plnit funkci tabulky. Krom∞ skuteΦnΘ tabulky nebo dotazu ulo₧enΘho v databßzi (VIEW) to m∙₧e b²t i dotazov² v²raz v zßvorkßch nebo join.
Pojem join vyjad°uje vytvo°enφ spojen²ch zßznam∙ ze dvou tabulek z°et∞zenφm hodnot sloupc∙ z jednoho zßznamu prvnφ tabulky a jednoho zßznamu druhΘ tabulky. Druh joinu a specifikace joinu urΦujφ, kter² zßznam s kter²m se takto spojφ:
Specifikace indexu u jmΘna tabulky vnutφ pou₧itφ konkrΘtnφho indexu bez ohledu na volbu optimalizßtoru.
P°φpadnΘ p°ejmenovßnφ na konci zobecn∞nΘ tabulky dovoluje zadat jmΘno, jim₧ se bude mo₧no na tuto tabulku dßle odkazovat, a p°φpadn∞ takΘ jmΘna sloupc∙ tΘto tabulky. PoΦet uveden²ch jmen sloupc∙ musφ b²t stejn² jako poΦet sloupc∙ v zobecn∞nΘ tabulce.
Odchylky od Intermediate level sm∞rem k Full level nebo k SQL 3
RozÜφ°enφ jazyka SQL proti norm∞
Viz takΘ:
P°φklad pou₧itφ dotazov²ch v²raz∙ a join∙ na mφst∞ zobecn∞nΘ tabulky (z aplikace eSupport - zjednoduÜeno):
SELECT *
FROM Kb_topics
LEFT OUTER JOIN
(SELECT topic_id,un_reports+un_answers AS unanswered
FROM (SELECT topic_id,Count(*) AS un_reports
FROM Kb_reports WHERE all_answer_count=0 GROUP BY topic_id
)
JOIN
(SELECT Kb_reports.topic_id,Count(*) AS un_answers
FROM Kb_reports JOIN Kb_answers ON (Kb_reports.id=Kb_answers.report_id)
WHERE (NOT EXISTS(SELECT *
FROM Kb_answers answ
WHERE Kb_answers.id=answ.question_id))
GROUP BY Kb_reports.topic_id
)
USING (topic_id))
ON (Kb_topics.id=topic_id)
ORDER BY Kb_topics.pos
![]() | Dotazy | Specifikace dotazu | ![]() |