- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
您好,我想将我的普通 mysql 查询转换为 zend.db.select;
我想使用这个脚本:
$select = $db->select();
// Add a FROM clause
$select->from( ...specify table and columns... )
// Add a WHERE clause
$select->where( ...specify search criteria... )
// Add an ORDER BY clause
$select->order( ...specify sorting criteria... );
$select->limit(20, 10);
下面是我的查询
SELECT
IF(derived_messages.toid = '$user', derived_messages.fromid,
derived_messages.toid) friend1,c.UserName,
derived_messages.message, derived_messages.fromid, derived_messages.toid,
derived_messages.is_read,derived_messages.type,derived_messages.id as mesid,
derived_messages.date,
(SELECT M.message_id FROM messagesmapped M where M.message_id= derived_messages.id AND M.user_id ='$user' AND M.important = 1) as MesMapid
FROM
(
SELECT *
FROM messages
WHERE messages.deleted_by NOT
IN ( $user )
ORDER BY Date DESC
) derived_messages
INNER JOIN Users c ON c.MemberID = IF(derived_messages.toid = '$user', derived_messages.fromid,
derived_messages.toid)
WHERE (derived_messages.id IN
(SELECT M.message_id FROM messagesmapped M where M.message_id= derived_messages.id AND M.user_id ='$user' AND M.important = 1)
AND
(derived_messages.toid='$user' OR derived_messages.fromid='$user'))
GROUP BY friend1 ASC
ORDER BY derived_messages.date DESC, derived_messages.id DESC LIMIT $limit $offset
我希望有人能在这方面帮助我。
谢谢。
最佳答案
有可能但不太可能有人会为您编写查询。
我对处理此类查询的建议是将每个单独的子查询编写为它自己的 Zend_Db_Select
对象,然后使用您已有对象的子查询构建最终查询。
Zend_Db_Select
不直接支持 IF
函数,因此您需要使用 Zend_Db_Expr
将该语句添加到您的选择中。
这是我所谈论内容的一个基本示例。让我们构建以下查询:
SELECT IF(msg.toId = 'drew010', msg.fromId, msg.toId), id, name, age, history.ip
FROM users
JOIN history ON users.id = history.userId
WHERE users.id = (
SELECT id FROM users WHERE loginCount > 1000
)
GROUP BY id,
ORDER BY age DESC
首先构建子选择,选择 loginCount
> 1000 的用户。
$subquery1 = $db->select()
->from('users', array('id'))
->where('loginCount > ?', 1000);
接下来,使用 IF 函数构建外部查询:
$cols = array(
new Zend_Db_Expr('IF(' . $db->quoteInto('msg.toId = ?', 'drew010') . '), msg.fromId, msg.toId'),
'id', 'name', 'age'
);
$query = $db->select()
->from('users', $cols)
->join('history', 'users.id = history.userId', array('ip'))
->where('id = ?', $subquery1)
->group('id')
->order('age DESC');
echo $query;
输出:
SELECT
IF(msg.toId = 'drew010', msg.fromId, msg.toId),
`users`.`id`,
`users`.`name`,
`users`.`age`,
`history`.`ip`
FROM `users`
INNER JOIN `history`
ON users.id = history.userId
WHERE id = (
(SELECT `users`.`id`
FROM `users`
WHERE (loginCount > 1000))
)
GROUP BY `id`
ORDER BY `age` DESC
所以要走的路是先将整个查询分解成单独的查询,然后构造外部查询。只要有耐心,慢慢来。然后阅读 Zend_Db_Select
文档以全面了解您可以使用的内容。
关于php - 如何将普通的 sql 查询转换为 Zend_Db_Select?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416719/
我很难弄清楚从哪里开始将此查询放入 Zend_Db_Select。我从未在 Zend 中使用过变量赋值和子查询: SELECT @current_continent := stats_geo_
我使用以下代码并收到以下错误 $select = $model->select(); $select->from(array('stocktakejob'), array("P
假设我有一个随机的 zend_db_select 对象。 我如何对该对象进行计数,以便知道满足查询的项目数量。 我尝试了以下方法: $data->TotalRecords = $select->col
我在将此查询转换为使用 ZF 的 Zend_Db_Select 时遇到一些问题: SELECT b.id, b.title, b.description FROM memberships AS m J
我知道 Zend_Db_Select 的使用是可选的,但我想知道是否有办法使用它来生成以下 SQL: LEFT JOIN (pages p , core_u
我有一个查询,需要选择内部带有冒号的文本,基本上如下所示: $select = $this->db->select() ->from('table') ->where(sprintf(
我需要编写以下查询: SELECT forum_threads.id AS id_thread, forum_threads.topic, forum_threads.date_created, fo
SELECT SUM(Table.ColumnThatChanges) AS 'Count', Table.B as 'Param' FROM Table WHERE Table.C = 4
如何使用 Zend_Db_Select 直接从子查询(派生表)中进行选择? 看,我有 5 个具有相同结构的表,我想从中获取所有行,合并它们并删除重复项。我正在使用 UNION 自动删除重复项。问题是我
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Zend Framework Complex Where Statement 如何在仍然使用引用的情况下将类
如何设置这个查询 SELECT city_id FROM cities WHERE city_name LIKE "%Vicenza%" 使用 Zend_Db_Select 类? 最佳答案 因为@Je
我将如何使用 Zend_Db_Select? 构建此查询: SELECT users.user_id, email_address, t1.value as 'languages' FROM u
我需要将此 sql 查询转换为 Zend_Db_Select 对象 'SELECT `main_table`.*, `product_name_table`.`name` as `product_na
我正在尝试修改一个插件,除其他外,它可以按字母顺序对 mysql 数据库中的数组进行排序。相关 PHP 文件中进行排序的部分如下所示: $select->order("$alias.name ASC"
我知道 Zend 提供了 having() 方法,但我想要的是这样的查询: SELECT a.*, `as`.* FROM `fruit_db`.`apples` AS `a` INNER JOIN
您好,我想将我的普通 mysql 查询转换为 zend.db.select; 我想使用这个脚本: $select = $db->select(); // Add a FROM clause $sele
好吧,情况是这样的,我有一个用 Zend_Framework 编写的应用程序,它与作为后端的 MySQL 和 MSSQL 兼容。现在,ZF 非常擅长解决两种语言之间的许多 SQL 差异/差异,但我仍然
所以我正在尝试完成这样的事情: SELECT * FROM table WHERE status_id IN (1,3,4); 使用 Zend_Db_Select...找不到如何做到这一点:(这可能吗
我有一个查询,它在子选择上执行 LEFT JOIN。此查询在高负载环境中运行,并在设定的要求内执行。查询(高度简化)如下所示: SELECT table_A.pKey , table_A.uKey
所以我有这个查询: select u.*, count(mi.media_id) as media_count from user as u left join media_items as mi o
我是一名优秀的程序员,十分优秀!