\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}