当前位置: 首页 > 面试题库 >

为什么列别名在理论上不起作用?

贺文彬
2023-03-14
问题内容

我的脚本是这样的:

$query = Doctrine_Query::create ()
  ->select('count(p.product_id) as num_a')              
  ->from ( 'ProductComments p' )
  ->groupBy('p.product_id')
  ->having('num_a =2 ');

生成的sql是:

SELECT COUNT(i.product_id) AS i__0 FROM productcomments i GROUP BY i.product_id HAVING num_a=2

因此,执行sql时出现错误。

我有两个问题:

  1. 为什么用表的别名'i'代替'p'

  2. 为什么'num_a'in have子句不被替换'i__0',如何解决?

谢谢你的建议…


问题答案:

1:为什么表的别名是“ i”而不是“ p”?

2:为什么having子句中的“ num_a”没有被“ i__0”替换,如何解决?

这两个问题都可以简单回答:Doctrine使用它自己的别名进行查询。您不需要知道这些别名,因为它们不会影响您,也不需要使用它。

即使Doctrine命名了别名,i__0您也可以使用自定义别名来访问属性,例如,$yourObject->num_a将具有适当的值,即的结果count(p.product_id)

看到查询的输出是有用的调试功能,但是依赖于应用程序内部是没有意义的,因为这些值仅用于Doctrine的内部机制。



 类似资料:
  • 问题内容: 为什么事务不回滚“身份”列。我有一个名为“ DetailReports”的表,其中有一个“标识”列。有一些SPS可以管理DetailReports的数据。现在存在基于条件的事务,现在的问题是,当我们调用事务回滚时,我们不会得到标识列的回滚。如果它是交易的性质,那么我的问题是为什么? 问题答案: 它与您的代码或程序的代码无关。这就是系统的工作方式。打个比方:您正站在银行的队列中,并已取一

  • hashmap和hashtable在理论上有区别吗? 我不是指Java(或实现)中给出的具体定义,而是理论上的。哈希表不是使用哈希的地图吗...因此是hashmap?

  • 问题内容: 我想在chromedp上使用代理,但是代理似乎不起作用,尝试了chromedp.ProxyServer 使用代理后,我得到了公共IPeven。无错误/警告 问题答案: 试试这个:

  • 我正在尝试使用这个名为OpenSimplexNoise的库,由GitHub用户TheCodingTrain制作。但我立即发现我无法使用它。我做了一些挖掘,试图自己解决这个问题,我发现JAR文件和主文件夹应该具有相同的名称(例如,库文件将命名为OpenSimplexName,JAR文件将命名为OpenSimplexNoise.jar),JAR文件所在的文件夹应该称为“库”。一旦我修复了这些问题,Op

  • 在我的应用程序(,出现了一个向上箭头,表示,但我无法处理它来执行任何操作,甚至无法显示toast。我尝试了这个方法,并在选项ItemSelected()中处理了开关(item.getItemId()),但这两种解决方案都不适合我。我错过了一些东西,但不知道是什么。 这是我的代码: ... 我的整个选项项已选定: 我不知道其他代码是否重要: 在我的清单中,我没有父母活动。 我找到了这个答案,它似乎是

  • 问题内容: 以下功能在Opera,Firefox和Chrome上正常运行。但是,在IE8中它部分失败。 有人知道为什么吗?有没有明显的错误? 问题答案: IE9之前的IE版本没有的功能,以定义确切的规范版本,请在尝试使用它之前运行此功能: 这是MDN的版本,在Firefox/SpiderMonkey中使用。在其他情况下,例如IE,它会在丢失的情况下添加……基本上是IE8或以下版本。