直積(CROSS JOIN
■データ間の全ての組み合わせを取得することを直積という。
users items(owner_idとusers.idは連結キーとする)
上記の様なテーブルがある場合に、両テーブル間の全組み合わせを取る。
・SELECT U.*,I.* FROM users u CROSS JOIN items I
通常、LEFT OUTER JOIN等をして各ユーザのの持つアイテム一覧を取得したりするが、
これらJOINは全て、直積結果を元に条件に一致したデータを抽出したものとなる。
ex)
以下は、INNER JOINにて、ユーザの持つアイテム一覧を取得する例
SELECT u.id,u.name,i.name FROM users u INNER JOIN items i ON
u.id = i.owner_id
これを、直積に対して条件を元に抽出する例で置き換えると以下
SELECT u.id,u.name,i.name,i.owner_id FROM users u CROSS JOIN items i
where u.id = i.owner_id