Zend DB:joinLeft 问题

发布于 2024-09-28 11:31:19 字数 347 浏览 6 评论 0原文

我正在尝试使用 Zend DB 构建此查询:

SELECT
    `s` . * ,
    `a` . *
FROM 
    `shr_statement` AS  `s`
LEFT JOIN  
    `shr_answer` AS a`
ON 
    a.statement_id = s.statement_id 
    AND
    a.user_id =1
WHERE
    (s.language =  'en_US') AND (s.is_active =1 )
ORDER BY 
    `order` ASC

我读到了有关双“ON”语句的可能问题...

谢谢!

I am trying to construct this query with Zend DB:

SELECT
    `s` . * ,
    `a` . *
FROM 
    `shr_statement` AS  `s`
LEFT JOIN  
    `shr_answer` AS a`
ON 
    a.statement_id = s.statement_id 
    AND
    a.user_id =1
WHERE
    (s.language =  'en_US') AND (s.is_active =1 )
ORDER BY 
    `order` ASC

I read about a possible issue with the double 'ON' statement ...

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

樱娆 2024-10-05 11:31:19

这应该可以解决问题,其中 $db 是 Zend_Db 适配器的实例

$select = $db->select()
    ->from(array('s' => 'shr_statement'))
    ->joinLeft(array('a' => 'shr_answer'), 'a.statement_id = s.statement_id')
    ->where('s.language = ?', 'en_US')
    ->where('s.is_active = ?', 1)
    ->where('a.user_id = ?', 1)

This should do the trick, where $db is an instance of your Zend_Db adapter

$select = $db->select()
    ->from(array('s' => 'shr_statement'))
    ->joinLeft(array('a' => 'shr_answer'), 'a.statement_id = s.statement_id')
    ->where('s.language = ?', 'en_US')
    ->where('s.is_active = ?', 1)
    ->where('a.user_id = ?', 1)
爱的十字路口 2024-10-05 11:31:19

看来您缺少别名中的左反引号..即它应该是“shr​​_answer AS a”。

或者最好去掉所有的反引号。他们是邪恶的,也是不必要的! ;)

It seems you're missing the left backtick from your alias.. ie it should be "shr_answer AS a".

Or even better get rid of all your backticks. They are evil and unnecessary! ;)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文