原则 - 子查询 [英] Doctrine - subquery in from
本文介绍了原则 - 子查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
SELECT * FROM(
SELECT COUNT(*)AS计数,t.name AS名称
FROM标签t
INNER JOIN video_has_tag v USING(idTag)
GROUP BY v.idTag
ORDER BY count DESC
LIMIT 10
)作为标签ORDER BY名称
我想写这个教义。我该怎么办?我写道:
Doctrine_Query :: create()
- > select('COUNT(t.idtag)as count,t.name')
- > from('Tag t')
- > innerJoin('t.VideoHasTag v')
- > groupBy('v.idTag ')
- > orderBy('count DESC,t.name')
- > limit(30)
- > execute();
但我不能把它放在从按名称排序。
解决方案
这是一个答案:
$ q = new Doctrine_RawSql();
$ q-> addComponent('t','Tag')
- > select('{t.name},{t.count}')
- > from ('(SELECT COUNT(*)as count,t.name,t.idtag
FROM Tag t
INNER JOIN Video_Has_Tag v USING(idTag)
GROUP BY v.idTag
ORDER BY count DESC
LIMIT 50)t')
- > orderBy('name');
I have a query in MySQL:
SELECT * FROM (
SELECT COUNT(*) AS count, t.name AS name
FROM tag t
INNER JOIN video_has_tag v USING (idTag)
GROUP BY v.idTag
ORDER BY count DESC
LIMIT 10
) as tags ORDER BY name
and I want to write this in doctrine. How I can do that? I wrote:
Doctrine_Query::create()
->select('COUNT(t.idtag) as count, t.name')
->from('Tag t')
->innerJoin('t.VideoHasTag v')
->groupBy('v.idTag')
->orderBy('count DESC, t.name')
->limit(30)
->execute();
But I can't put it in "from" to sort by name.
解决方案
This is a answer:
$q = new Doctrine_RawSql();
$q->addComponent('t', 'Tag')
->select('{t.name}, {t.count}')
->from('(SELECT COUNT(*) as count, t.name,t.idtag
FROM Tag t
INNER JOIN Video_Has_Tag v USING(idTag)
GROUP BY v.idTag
ORDER BY count DESC
LIMIT 50) t')
->orderBy('name');
这篇关于原则 - 子查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文