我该如何使用该distinct条款Zend\Db\Sql\?
我正在研究一些 问题,询问如何在Zend Framework查询中进行连接,但答案总是像"只做setIntegrityCheck(FALSE)".
我的问题是:为什么我需要这样做?
在我看来,禁用"完整性检查"并不是使这项工作正常的方法.在我的特定情况下,我正在使用带有外键的一些InnoDB表的MySQL数据库,例如:
CREATE TABLE IF NOT EXISTS `tableA`
(
`id` CHAR(6),
`name` VARCHAR(255),
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `tableB`
(
`tableA_id` CHAR(6),
`somefield` VARCHAR(255),
PRIMARY KEY (`tableA_id`)
) ENGINE=InnoDB;
ALTER TABLE `tableB` ADD FOREIGN KEY fk1 (`tableA_id`) REFERENCES `tableA` (`id`);
Run Code Online (Sandbox Code Playgroud)
(这是我的数据库的一个非常简化的版本)
而且,我的查询代码如下所示:
$table = new Zend_Db_Table('tableB');
$select = $table->select(TRUE)
->join(array('a' => 'tableA'), 'tableB.tableA_id = a.id');
$result = $table->fetchAll($select);
Run Code Online (Sandbox Code Playgroud)
这给了我"选择查询无法与另一个表连接"异常,除非我添加setIntegrity(FALSE)到我的$select.
我正在尝试使用Zend DB select来执行此查询,但我无法这样做
这是sql查询
select shopping_id,shopping_details,"friend" as type from shopping
请注意我如何指定"朋友"作为类型,而朋友不是购物表中的列.
现在我如何在Zend中做到这一点.我试过这个但它给了我一个错误说"sh.friend Column不存在"
$select->from(array('sh'=>'shopping'),array('shopping_id','shopping_details','"friend" as type');
任何帮助将不胜感激
我将如何使用Zend_Db_Select?以下方法构造此查询:
SELECT users.user_id, email_address, t1.value as 'languages'
FROM users
LEFT JOIN (
SELECT
user_id
, field_id
, GROUP_CONCAT(value SEPARATOR ',') AS value
FROM user_multivalued
WHERE field_id=25
GROUP BY user_id, field_id) t1
ON t1.user_id = users.users_id
WHERE list_id = 45
Run Code Online (Sandbox Code Playgroud) 我在翻译此查询以使用ZF时遇到一些问题Zend_Db_Select:
SELECT b.id, b.title, b.description
FROM memberships AS m
JOIN blogs AS b ON b.id = m.blog_id
WHERE m.user_id = ?
ORDER BY m.created
LIMIT 0, 30
Run Code Online (Sandbox Code Playgroud)
(此查询有效并返回结果)
Memberships是blogs和之间的链接表users.这是一件简单的| id | blog_id | user_id |事情.
这是我到目前为止所拥有的:
// $table = Zend_Db_Table instance, $id = a user id
$select = $table->select()
->from(array('m' => 'memberships'), array('b.id', 'b.title', 'b.description'))
->join(array('b' => 'blogs'), 'b.id = m.blog_id')
->where('m.user_id = ?', (int) $id)
->order('m.created DESC')
->limit(0, 30);
Run Code Online (Sandbox Code Playgroud)
这是我得到的(奇怪的(对我而言)错误: …
假设我有2个表
articles
id title
1 Article 1
2 Article 2
Images
id article_id image
1 1 a.png
2 1 b.png
3 2 c.png
4 2 d.png
Run Code Online (Sandbox Code Playgroud)
我想要的只是用他们的图像来回顾所有文章.
例如:
article_id title images
1 Article 1 a.png, b.png
2 Article 2 c.png, d.png
Run Code Online (Sandbox Code Playgroud)
我怎么能用Zend_Db_Select做到这一点?
我尝试过类似的东西,但没有运气:
$select = $this->getDbTable()->select()->setIntegrityCheck(false)->distinct();
$select->from(array('a'=>'articles'))
->joinLeft(array('i'=>'images'),'i.article_id=a.id',array('images'=> new
Zend_Db_Expr('GROUP_CONCAT(i.image)')));
Run Code Online (Sandbox Code Playgroud)
它只返回1行'images'字段包含两篇文章的图像.
article_id title images
1 Article 1 a.png, b.png, c.png, d.png
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
我只是想知道在Zend Framework中执行db select的语法是什么,其中两个值为true.示例:我想查找用户是否已经是组的成员:
$userId = 1;
$groupId = 2;
$db = Zend_Db_Table::getDefaultAdapter();
$select = new Zend_Db_Select($db);
$select->from('group_members')
->where('user_id = ?', $userId); //Right here. What do I do about group_id?
$result = $select->query();
$resultSet = $result->fetchAll();
Run Code Online (Sandbox Code Playgroud) 假设我有一张桌子:学生
______________________________________________________
|id | name | school | class |
______________________________________________________
| 1 | John | ABC | C1 |
| 2 | Jack | ABC | C1 |
| 3 | Anna | ABC | C1 |
| 4 | Peter | DEF | D1 |
| 5 | Alex | ABC | C2 |
| 6 | Bryan | ABC | C2 |
| 7 | David | ABC | C2 |
| 8 | Cristian | DEF …Run Code Online (Sandbox Code Playgroud) 看起来有几种不同的方法可以使用Zend Framework连接两个表,但我以前从未这样做过,所以我不知道哪种方法最好.
这就是我要做的......
我的数据库中有3个表:
users
( id , name )
groups
( id , name )
group_members
( id , group_id , user_id )
Run Code Online (Sandbox Code Playgroud)
我正在尝试查找用户所属的组并将其显示给用户.这个SQL语句几乎完成了这项工作(虽然可能有更好的方法来编写它).它只返回我关注的列,它们是组的id和title.
SELECT groups.id, groups.title
FROM group_members
INNER JOIN groups
ON groups.id = group_members.group_id
WHERE user_id = $userId
Run Code Online (Sandbox Code Playgroud)
如何使用Zend Framework完成此操作?
zend-framework inner-join zend-db-table zend-db zend-db-select
我想WITH在Zend框架中使用SQL查询中的语法,SQL看起来像这样:
WITH t AS
(SELECT item_id, row_number() OVER (ORDER BY some_criteria DESC) rn
FROM orders)
SELECT t2.rn, t2.item_id
FROM t t1 JOIN t t2 ON (t2.rn > t1.rn)
WHERE t1.item_id = 145;
Run Code Online (Sandbox Code Playgroud)
我怎么能在Zend Framework中这样做?用Zend_Db_Select?有什么建议?
zend-db-select ×10
zend-db ×5
group-concat ×2
mysql ×2
inner-join ×1
left-join ×1
oracle ×1
php ×1
sql ×1