我的Yii 1.1
网站存在一些问题。
我有两个表,UserArtists
和Artists
。 UserArtists
正在通过文件上传,并包含两个字段(hash, artist_id)
,其中hash
是用户哈希,artist_id
是艺术家表格的id
。 Artists
包含艺术家信息。
从中填充UserArtists
的文件是从外部源生成的,hash
的{{1}}都不匹配我们的表,因此它包含artist_id
}和hash
值,这些值在实际数据中不存在。
现在,我需要做的是添加一些统计数据。我对artist_id
不匹配完全没问题,但我需要了解上传到我们的hash
表中的artist_id
个数量中有多少是{&1}}。 t出现在UserArtists
表格中。
使用纯Artists
请求,我可以通过以下方式实现此结果:
mysql
但我很难将此查询转换为Yii SELECT COUNT(`ua`.*) FROM UserArtists `ua`
LEFT OUTER JOIN Artists `a` ON `ua`.`artist_id` = `a`.`id`
WHERE `a`.`id` IS NULL
。将不胜感激。
编辑除了获取统计信息的此信息(我可能会使用CDbCriteria
),我需要能够删除所有无效CDbCommand
的记录,为此,我需要一些方法来进行自定义查询。
答案 0 :(得分:0)
这个SQL-Query应该足以删除ArtArtists中没有匹配的UserArtists中的记录:
DELETE FROM UserArtists
WHERE artists_id NOT IN (SELECT artists_id FROM Artists)
这应该返回你想要的数字:
SELECT COUNT(*) FROM UserArtists
你可以这样做:
$sql = 'DELETE FROM UserArtists
WHERE artists_id NOT IN (SELECT artists_id FROM Artists)';
$numberOfEffectedRows = Yii::app()->db->createCommand($sql)->exectue();
$numberOfValidItems = UserArtists::model()->count();