SQL 指南書集 目次 - ray88’s diary
■以下のテーブルよりそれぞれ重複順列・順列・組み合わせを作成する
【重複順列を作成】
重複順列 - 数学ノート
/* 重複順列を得るSQL(p.29) */ SELECT P1.name AS name_1 ,P2.name AS name_2 FROM products P1,products P2;
3×3×3=9 通りの組み合わせが出力された
【順列を作成】
※「WHERE p1.name <> p2.name」によって同一の組み合わせを排除
異なるn個のものからr個取り出して一列に並べるときの場合の数 - 数学ノート
/* 順列を得るSQL(p.30) */ SELECT P1.name AS name_1 ,P2.name AS name_2 FROM products P1,products P2 WHERE p1.name <> p2.name;
通りの組み合わせが出力された
【組み合わせ①】
不当記号の条件で各アイテムについて「文字コードの順にソートして自分より(ここでは)前の来る」商品だけをペアの相手に選ぶようにする。
※文字コード順:みかん<りんご<バナナ
(バナナはカタカナなので文字コード上、一番うしろとなる)
※実行前に文字コードの順を以下SQLで確認
SELECT * FROM products ORDER BY name ASC;
/* 組み合わせを得るSQL(p.31) */ SELECT P1.name AS name_1 , P2.name AS name_2 FROM Products P1, Products P2 WHERE P1.name > P2.name;
みかん<りんご<バナナ
【組み合わせ②】
3つ以上の組み合わせを得たいときも、次のように簡単に拡張できる。
/* 組み合わせを得るSQL:3列への拡張(p.31) */ SELECT P1.name AS name_1 ,P2.name AS name_2 ,P3.name AS name_3 FROM Products P1, Products P2, Products P3 WHERE P1.name > P2.name AND P2.name > P3.name;
みかん<りんご<バナナ