\begin{frame} \frametitle{Inner and Outer Joins} \begin{quiz}{\textwidth}{Is there a problem with the following query?} ``\emph{Number of homeworks solved per student (including 0).}'' \bigskip \small \BUseVerbatim{query} \end{quiz} %% Yes: %% The outer join is constructed before the where clause is evaluated: %% for Students without any entry in Results, the attributes R.cat, %% R.eno, ... have been set to null before the test one R.cat = 'H' %% takes place. \smallskip\pause Correction: \begin{itemize} \item restrict the join inputs \emph{before} the outer join is performed, or \item \emph{move} restrictions into the \sql{on} clause (\alert{warning: next slide}). \end{itemize} \begin{code}{\textwidth}{Corrected version of last query} \small \BUseVerbatim{query2} \end{code} \end{frame}