gpt4 book ai didi

php - 如何在不带括号的 Zend_Db_Select 语句中使用 "HAVING"子句?

转载 作者:可可西里 更新时间:2023-11-01 08:54:26 29 4
gpt4 key购买 nike

我知道 Zend 提供了 having() 方法,但我想要的是这样的查询:

SELECT a.*, `as`.* FROM `fruit_db`.`apples` AS `a`
INNER JOIN `fruit_db`.`apple_seeds` AS `as` ON a.id = as.apple_id
WHERE (a.id = 1) AND as.seed_name HAVING 'johnny'

不是“有(as.seed_name = 'johnny')”

回溯一下,我们有表格:

fruit_db.apples

| id  | name |
--------------
| 1 | red |
| 2 | green|

fruit_db.apple_seeds

| apple_id | seed_name | 
------------------------
| 1 | johnny |
| 1 | judy |
| 2 | granny |

我想要这样的结果:

| id  | name | apple_id | seed_name |
-------------------------------------
| 1 | red | 1 | johnny |
| 1 | red | 1 | judy |

上面提供的查询给出了这个结果,但是使用 Zend_Db_Select 将括号放在 having 和 where 语句的每个部分周围,这使我的查询无效。所以

$zend_db_table->select()
->setIntegrityCheck(false)
->from(array("a" => "apples"), array("*"))
->join(array("as"=>"apple_seeds"),
"a.id = as.apple_id",
array("*"))
->where('a.id = 1')
->where('as.seed_name HAVING "johnny"');

产生:

SELECT a.*, `as`.* FROM `fruit_db`.`apples` AS `a`
INNER JOIN `fruit_db`.`apple_seeds` AS `as` ON a.id = as.apple_id
WHERE (a.id = 1) AND (as.seed_name HAVING 'johnny')

这是无效的 SQL。简而言之:

SELECT a.*, `as`.* FROM `fruit_db`.`apples` AS `a`
INNER JOIN `fruit_db`.`apple_seeds` AS `as` ON a.id = as.apple_id
WHERE (a.id = 1) AND as.seed_name HAVING 'johnny'

是有效的,但是:

SELECT a.*, `as`.* FROM `fruit_db`.`apples` AS `a`
INNER JOIN `fruit_db`.`apple_seeds` AS `as` ON a.id = as.apple_id
WHERE (a.id = 1) AND (as.seed_name HAVING 'johnny')

Zend 生成的是无效的 SQL。我不想要只有 seen_name 'johnny' 的一行,我想要 apple id = 1 AND seed_name 'johnny' 在这些结果中某处的所有行。我可以通过 Zend_Db_Select 获得我需要的东西还是我需要走原始的 query() 路线?

编辑:我对问题做了一些修改,使其更接近我想要的内容,并试图对其进行一些澄清。

最佳答案

改变

->where('as.apple_id HAVING 1');

->having('as.apple_id = 1');

http://framework.zend.com/manual/en/zend.db.select.html

关于php - 如何在不带括号的 Zend_Db_Select 语句中使用 "HAVING"子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7925966/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com