回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图运行这样的查询:</p>
<pre><code>SELECT
comment_type_id, name, count(comment_type_id)
FROM
comments, commenttypes
WHERE
comment_type_id=commenttypes.id
GROUP BY
comment_type_id
</code></pre>
<p>如果没有<code>comments</code>和<code>commenttypes</code>之间对<code>name</code>列的联接,我可以使用:</p>
^{pr2}$
<p><strong>但是</strong>如果我尝试这样做,我会得到错误的结果:</p>
<pre><code>session.query(Comment.comment_type_id, Comment.comment_type, func.count(Comment.comment_type_id)).group_by(Comment.comment_type_id).all()
</code></pre>
<p>我对结果有两个问题:</p>
<pre><code>(1, False, 82920)
(2, False, 588)
(3, False, 4278)
(4, False, 104370)
</code></pre>
<p><strong>问题</strong>:</p>
<ul>
<li><code>False</code>不正确</li>
<li>计数是错误的</li>
</ul>
<p>我的预期结果是:</p>
<pre><code>(1, 'Comment Type 1', 13820)
(2, 'Comment Type 2', 98)
(3, 'Comment Type 2', 713)
(4, 'Comment Type 2', 17395)
</code></pre>
<p>如何调整命令以获取正确的<code>name</code>值和正确的计数?在</p>
<p>我的模型定义如下:</p>
<pre><code>class Comment(db.Model):
__tablename__ = 'comments'
id = Column(Integer, primary_key=True, unique=True)
comment_type_id = Column(Integer, ForeignKey('commenttypes.id'), nullable=False, index=True)
comment_type = relationship('CommentType', backref='comments')
class CommentType(db.Model):
__tablename__ = 'commenttypes'
id = Column(Integer, primary_key=True, unique=True)
name = Column(String(50, convert_unicode=True), nullable=False)
</code></pre>