Say you have a table: '''Addresses''' First-Name Last-Name Address _______________________________________ William Underwood Somewhere John Smith Somewhere-Else Jane Smith Somewhere-Else Projection lets you answer questions such as "How many unique names are there in the database?" and "What addresses are there in the database?" For example, if we projected the above table to {First-Name Last-Name} we would be left with '''Addresses.projectTo({First-Name Last-Name})''' First-Name Last-Name ______________________ William Underwood John Smith Jane Smith Likewise, if we projected down to {Address} we would have '''Addresses.projectTo({Address})''' Address ______________ Somewhere Somewhere-Else Note that the duplicates are eliminated from the result: in relational theory, you can't have two tuples (rows) in a table which are identical; by removing the First-Name from the table, the rows "John, Smith, Somewhere-Else" and "Jane, Smith, Somewhere-Else" become indistinguishable, and so they are collapsed into one row. ---- ---- I have not tested it, but one may be able to achieve this in SQL using something like: select first, last, combined from (select first, last, concat(first,' ',last) as combined from names ) group by first, last, combined ''It's simpler than that actually, you'd just do'' SELECT DISTINCT First-Name, Last-Name FROM Addresses Not all dialects support Distinct (at least they did not used to). Then again they don't all support nested queries either. ''Note though, that I'm deliberately ignoring standard SQL syntax for exactly this reason. You know SQL, but yet you don't know relational algebra, which SQL is a broken implementation of. The alternate syntax makes sure that misconceptions brought from experience in query languages are exposed.'' I am just covering the practical side of things because for good or bad, we are stuck with SQL for a while. ---- One of the operators in RelationalAlgebra