1

私は2つのテーブルを持っています:

CREATE TABLE `digits` (
  `digit` tinyint(3) unsigned NOT NULL,
  `group` tinyint(3) unsigned NOT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

INSERT INTO `digits` (`digit`, `group`) VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 2);

CREATE TABLE `scores` (
  `digit1` tinyint(3) unsigned NOT NULL,
  `digit2` tinyint(3) unsigned NOT NULL,
  `score` tinyint(3) unsigned NOT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

INSERT INTO `scores` (`digit1`, `digit2`, `score`) VALUES
(1, 2, 5),
(1, 4, 9),
(2, 3, 3);

私がやりたいのは、スコア付きの数字のすべての組み合わせ(繰り返しなし)を選択し、スコアがない場合はnullを選択することです

回答例(WHERE group <=1):

digit1 | digit2 | score
-----------------------
1      | 2      | 5
1      | 3      | null
2      | 3      | 3

回答例(WHERE group <=2):

digit1 | digit2 | score
-----------------------
1      | 2      | 5
1      | 3      | null
1      | 4      | 9
1      | 5      | null
2      | 3      | 3
2      | 4      | null
2      | 5      | null
3      | 4      | null
3      | 5      | null
4      | 5      | null
4

1 に答える 1

2

これを試して:

select d1.digit, d2.digit, s.score
from digits d1 join
     digits d2
     on d1.group <= <groupnumber> and
        d2.group <= <groupnumber> and
        d1.digit < d2.digit left outer join
     score s
     on s.digit1 = d1.digit and
        s.digit2 = d2.digit
于 2013-01-07T21:25:07.857 に答える