如何从匹配对的MySQL表中找到共享键值?

时间:2014-04-27 23:54:30

标签: php mysql

我有一个两列MySQL表,表示具有三种不同选项(大小,颜色等)的产品变体。

##############################
#  VariationID  #  OptionID  #
##############################
#            1  #        10  #
#            1  #        20  #
#            1  #        30  #
#            2  #        11  #
#            2  #        20  #
#            2  #        30  #
#            3  #        10  #
#            3  #        22  #
#            3  #        30  #
#            4  #        10  #
#            4  #        20  #
#            4  #        33  #
##############################

该表是由我正在使用的PHP框架(Silverstripe)生成的,因此我无法轻易修改它。

如何识别哪个 VariationID 与特定选项匹配?

我可以运行MySQL查询,返回变量的VariationID和OptionIDs 10,20,30吗?

如果在原始MySQL中不可能,那么PHP中最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

你可以直接使用SQL,但它有点乱:

SELECT 
  A.VariationID AS VariationID
FROM
  tablename AS A
  INNER JOIN tablename AS B ON A.VariationID=B.VariationID
  INNER JOIN tablename AS C ON A.VariationID=C.VariationID
WHERE
  A.OptionID=10
  AND B.OptionID=20
  AND C.OptionID=30

这会找到VariationID行,OptionID值为10,20和30