\begin{frame}
\frametitle{Joins}
\structureStudentsResults
Consider a query with two tuple variables:
\begin{center}
\begin{code}{0.5\textwidth}{}
\small\centering
$
\begin{array}{ll}
\sql{select} & A_1\sql, \dots\sql, A_n \\
\sql{from} & \sql{Students S, Results R} \\
\sql{where} & C
\end{array}
$
\end{code}
\end{center}
\pause
\begin{itemize}
\item \sql{S} ranges over 5 rows in \sql{Students},
\item \sql{R} ranges over 8 rows in \sql{Results}.
\end{itemize}
\medskip\pause
\emph{Conceptually}, all $5 \cdot 8 = 40$ combinations will be considered:
\begin{tcenter}
\begin{code}{0.5\textwidth}{}
\small\centering
\begin{algorithmic}
\FORALL{\textbf{rows} $\sql{S} \in \sql{Students}$}
\FORALL{\textbf{rows} $\sql{R} \in \sql{Results}$}
\IF{$C$}
\STATE \textbf{print} $A_1, \dots, A_n$
\ENDIF
\ENDFOR
\ENDFOR
\end{algorithmic}
\end{code}
\end{tcenter}
\bigskip
\end{frame}