我正在尝试使用 Doctrine 2 实现一个复杂的 SQL 查询。 但是,我的 SQL 查询有子选择。我认为这是问题所在,但我想不出解决这个问题的方法。
SELECT
x.year, x.month, y.total
FROM
(SELECT
YEAR(a.date) year, MONTH(a.date) month, count(*) number
FROM
Acessos a
GROUP BY
YEAR(a.date), MONTH(a.date)) x
INNER JOIN
(SELECT
MAX(Z.number) total
FROM
(SELECT
COUNT(a.id) number
FROM
Acessos a
GROUP BY
YEAR(a.date), MONTH(a.date)) z) y ON x.number = y.total LIMIT 1
当我将此查询用于运行 trhu 代码时,我得到了一个 QueryException。
<b>Fatal error</b>: Uncaught exception 'Doctrine\ORM\Query\QueryException'
with message 'SELECT x.messelecionado, x.anoselecionado, y.total from (select
month(a.data) messelecionado, year(a.data) anoselecionado, count(*) numero from
Acesso a group by month(a.data), year(a.data)) x inner join (select max(z.numero)
total from (select count(a.id) numero from Acesso a group by month(a.data),
year(a.data)) z) y on x.numero = y.total limit 1' in
C:\xampp\htdocs\patclin\app\Doctrine\ORM\Query\QueryException.php:39
Stack trace:
#0 C:\xampp\htdocs\patclin\app\Doctrine\ORM\Query\Parser.php(429):
Doctrine\ORM\Query\QueryException::dqlError('SELECT x.messel...')
#1 C:\xampp\htdocs\patclin\app\Doctrine\ORM\Query\Parser.php(854):
Doctrine\ORM\Query\Parser->semanticalError('Class '(' is no...', Array)
#2 C:\xampp\htdocs\patclin\app\Doctrine\ORM\Query\Parser.php(1529):
Doctrine\ORM\Query\Parser->AbstractSchemaName()
#3 C:\xampp\htdocs\patclin\app\Doctrine\ORM\Query\Parser.php(1426):
Doctrine\ORM\Query\Parser->RangeVariableDeclaration()
#4 C:\x in <b>C:\xampp\htdocs\patclin\app\Doctrine\ORM\Query\QueryException.php</b>
on line <b>49</b><br />
有人知道我能做什么吗?
谢谢!!!
最佳答案
您用 group by 子句编写的 YEAR 函数不被学说理解。你必须为此注册自定义 dql 函数。 这是 doctrine 提供的 dql 函数列表: http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#dql-functions
这是创建您自己的 dql 函数的链接 http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#adding-your-own-functions-to-the-dql-language
groupby 也仅适用于聚合函数(AVG、COUNT、MIN、MAX、SUM)
此链接可能对您有所帮助 Group by using month, year in doctrine2
关于php - Doctrine 上的复杂 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21218536/
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类
我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时
我有一个.pfx格式的证书,我需要使用ruby提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o
我在加密来self正在使用的第三方供应商的值时遇到问题。他们的指令如下:1)Converttheencryptionpasswordtoabytearray.2)Convertthevaluetobeencryptedtoabytearray.3)Theentirelengthofthearrayisinsertedasthefirstfourbytesontothefrontofthefirstblockoftheresultantbytearraybeforeencryption.4)EncryptthevalueusingAESwith:1.256-bitkeysize,2.25
我正在开发西洋跳棋实现,其中有许多易于测试的方法,但我不确定如何测试我的主要#play_game方法。我的大多数方法都可以很容易地确定输入和输出,因此也很容易测试,但这种方法是多方面的,实际上并没有容易辨别的输出。这是代码:defplay_gameputs@gui.introwhile(game_over?==false)message=nil@gui.render_board(@board)@gui.move_requestplayer_input=getscoordinates=UserInput.translate_move_request_to_coordinates(play