【问题标题】:Zend DB Left JoinZend DB 左连接
【发布时间】:2013-06-14 06:41:47
【问题描述】:

我意识到 Zend DB,Left Join SQL 查询为连接列返回 NULL。这是真的吗?

例如:

$selectmatchedtime = $this->dbo->select()
            ->from(array('v'=>'table1'))
            ->joinLeft(array('vc'=>'table2'),'vc.vid = v.vid');

为所有视频返回 null...

【问题讨论】:

  • 就在这个语句下面使用 die($selectmatchedtime);转储 sql 查询并在数据库中运行它,看看你得到什么结果。

标签: php sql database zend-framework


【解决方案1】:

问题是您查询中的vid 列属于两个表,但显然结果集中只能存储一个值。要解决此问题,请为其创建别名,明确说明应使用哪个表:

$selectmatchedtime = $this->dbo->select()
            ->from(array('v'=>'table1'))
            ->joinLeft(array('vc'=>'table2'),'vc.vid = v.vid')
            ->columns(array('vid'=>'v.vid'));

【讨论】:

  • 如果 'vc.vid = v.vid' 那么获取哪个 vid 是否重要?
  • 这是左连接,记住。对于在右侧找不到匹配项的行,vc.vid(与 vc.* 的所有其他值一样)将为 NULL。
  • 是否可以将and 包含在joinLeft 中?
猜你喜欢
  • 2020-09-28
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多