mysql - 如何在 zend db 上构建嵌套位置

标签 mysql zend-framework

大家好,我想在 zend db (zf1.9) 上构建这个查询

SELECT `p`.*, `r`.`name` AS `retailer`, `placer`.`name` AS `placer_name`, `placer`.`contact_firstname` AS `placer_firstname`, `placer`.`contact_lastname` AS `placer_lastname`, `placer`.`role_id` AS `placer_role_id`, `editor`.`name` AS `editor_name`, `editor`.`contact_firstname` AS `editor_firstname`, `editor`.`contact_lastname` AS `editor_lastname`, `editor`.`role_id` AS `editor_role_id` FROM `pos` AS `p`
     LEFT JOIN `retailers` AS `r` ON r.id = p.retailer_id
     LEFT JOIN `members` AS `placer` ON placer.id = p.placer_id
     LEFT JOIN `members` AS `editor` ON editor.id = p.editor_id WHERE (p.designer_id=116) AND ((placer.name  LIKE   '%demo%') OR (placer.contact_firstname  LIKE   '%demo%') OR (placer.contact_lastname  LIKE   '%demo%') OR (r.name  LIKE   '%demo%')) AND (`r`.`name` LIKE  '%M%') ORDER BY `p`.`id` asc

我该怎么做?我的问题只是

WHERE (p.designer_id=116) AND ((placer.name  LIKE   '%demo%') OR (placer.contact_firstname  LIKE   '%demo%') OR (placer.contact_lastname  LIKE   '%demo%') OR (r.name  LIKE   '%demo%')) AND (`r`.`name` LIKE  '%M%')

最佳答案

只需将嵌套的 where 子句拆分为多个 and 语句(使用嵌套的 or):

第一:

(p.designer_id=116) 

第二个:

((placer.name LIKE '%demo%') OR (placer.contact_firstname LIKE '%demo%') OR (placer.contact_lastname LIKE '%demo%') OR (r.name  LIKE '%demo%')) 

第三:

(`r`.`name` LIKE '%M%')
<小时/>

在 ZEND 中,每个 AND 都是一个单独的 where 子句,可能看起来像这样(未经测试!只是为了更好地理解!):

->where("p.designer_id=116");
->where("(placer.name  LIKE ?) 
        OR (placer.contact_firstname LIKE ?) 
        OR (placer.contact_lastname LIKE ?) 
        OR (r.name LIKE ?)", '%demo%', '%demo%', '%demo%', '%demo%');
->where("r.name LIKE ?", '%M%');

(注意:我添加了手动换行符以提高可读性)

关于mysql - 如何在 zend db 上构建嵌套位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18881230/

相关文章:

c# - 查询在 phpmyadmin 中工作在 C# 中不起作用

php - 在 Zend Framework 中调用 MYSQL 存储函数(不是存储过程)

php - Zend Framework 1.11 与 Doctrine 2 和命名空间

php - [Zend框架1]使用gmail发送邮件

php - 我如何使用 Zend_Mail 发送附件?

MySQL:在 SELECT 语句中使用 IF 条件比较日期

java - 使用 Hibernate 跨多个表生成代理键

mysql - 为什么在 MySQL 中每个列只在一个索引中并且查询中列的顺序很重要?

php - Zend PDO 错误 - 我该如何调试它?

mysql - JOIN 的特定 MySQL 问题