Yii / SQL:获取与值列表完全匹配的行

时间:2013-05-23 09:37:14

标签: php sql yii

我正在尝试找出以下情况的SQL查询:

我有2个表,一个包含项目,另一个包含每个特定项目的属性。我怎样才能找到与某些listOfProperties中列出的所有属性完全匹配的所有项目?例如。 if listOfProperties = ['p3','p5','p2']然后id = 4的项目,即作为查询结果返回的记录之一,必须在表Properties中包含3个记录,一个用于'p3','p5'和' P2' 。可以猜测表'项'和'属性'在一对多类型中相关。

非常感谢所有人!

P.S。如果您可以为此查询编写CDbCriteria(在Yii框架中),那就太棒了。

2 个答案:

答案 0 :(得分:1)

这对我有用,受到@nauphal和this帖子的启发:

$list = array('p3','p5','p2');
$criteria = new CDbCriteria();
$criteria->alias = 'i';
$criteria->join = ' JOIN item_properties ip ON i.id = ip.item_id';
$criteria->addInCondition('item_property',$list);
$criteria->having = "COUNT(DISTINCT(item_property)) = ".count($list);
$criteria->group = 'i.id';
$items = Items::model()->findAll($criteria);

答案 1 :(得分:0)

希望这会有所帮助

$criteria = new CDbCriteria();
$criteria->alias = 'i';
$criteria->join = ' JOIN item_properties ip ON i.id = ip.item_id';
$criteria->addInCondition('item_property',array('p3','p5','p2'));
$items = Items::model()->findAll($criteria);