如何从table1中选择table2中有table3选项的记录?

时间:2011-10-05 22:19:19

标签: mysql foreign-keys one-to-many

让我们说,我有三张桌子:

  • table1:包含各种记录;
  • table2:包含哪些记录有哪些选项;
  • table3:包含选项;

table2包含table1和table3的外键 - 从而指定哪个table1记录具有witch table3选项。 table1记录可以有多个table3选项;

我正在尝试通过指定选项来选择table1记录,我需要能够选择任何选项\任意选项组合并显示具有此选项组合的所有table1记录,它可以有其他选项,但它必须具有指定的......

你会如何编写/构建这样的查询?

注意:我正在指定从表单中使用哪些选项..

想象 - 表1包含产品,table3包含有关产品的各种详细信息

用户提交表单选择复选框,从而显示产品应具有的详细信息,并且我需要获取具有这些选项的所有记录...

foreach($table1record as $detail){
  if($this->input->post('detail_{$detail['id']})){
    //option selected, continue building query ...
  }
}

1 个答案:

答案 0 :(得分:0)

这个怎么样?

 SELECT t1.*
 FROM table1 as t1
 INNER JOIN table2 as t2
 WHERE t2.SomeColumn IN (SELECT SomeOtherCol FROM table3);