Sql查询具有多个一对多关系

时间:2014-06-16 11:59:26

标签: sql join one-to-many

我有一个问题,找到正确的SQL查询。

想象一下,我们有6张桌子。

CREATE TABLE IF NOT EXISTS `advisor` (
  `id_advisor` int(11) NOT NULL AUTO_INCREMENT,
  `position` int(11) NOT NULL,
  PRIMARY KEY (`id_advisor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `advisor_lang` (
  `id_advisor` int(11) NOT NULL,
  `name_advisor` varchar(90) NOT NULL,
  `description_advisor` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `advisor_question` (
  `id_advisor_question` int(11) NOT NULL AUTO_INCREMENT,
  `id_advisor` int(11) NOT NULL,
  `position` int(11) NOT NULL,
  PRIMARY KEY (`id_advisor_question`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `advisor_question_lang` (
  `id_advisor_question` int(11) NOT NULL,
  `id_lang` int(11) NOT NULL,
  `advisor_question` varchar(90) NOT NULL,
  `advisor_question_description` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `advisor_answer` (
  `id_advisor_answer` int(11) NOT NULL AUTO_INCREMENT,
  `id_advisor_question` int(11) NOT NULL,
  `position` int(11) NOT NULL,
  PRIMARY KEY (`id_advisor_answer`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `advisor_answer_lang` (
  `id_advisor_answer` int(11) NOT NULL,
  `id_lang` int(11) NOT NULL,
  `advisor_answer` varchar(90) NOT NULL,
  `advisor_answer_description` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

如您所见,每个顾问可以有多个问题,每个问题可以有多个答案。

现在我需要知道,如何通过一个查询选择所有可能的问题/答案组合。

例如,我们有3个问题。他们每个人都有3个可能的答案。然后我们有27种可能的组合。

坦克你帮助我,抱歉我的英语。

0 个答案:

没有答案