Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php sql联接未正确显示_Php_Mysql_Join - Fatal编程技术网

Php sql联接未正确显示

Php sql联接未正确显示,php,mysql,join,Php,Mysql,Join,我当前正在尝试使用左连接连接两个表: --入口-- id_门户(索引) id_地点 门户名称 --通路-- id_访问(索引) id_事件 id_门户 身份证 扫描存取 “访问”包含每个门户中每个事件的多个票证类型。我需要将这些组合起来,以获得每个门户的扫描访问列的总和,但包括具有“null”扫描访问权限的门户,以得到“0”。为了实现这一点,我使用了左连接: 选择portal.name\u portal,SUM(access.scan\u access)作为total\u scan

我当前正在尝试使用左连接连接两个表:

--入口--

  • id_门户(索引)
  • id_地点
  • 门户名称

--通路--

  • id_访问(索引)
  • id_事件
  • id_门户
  • 身份证
  • 扫描存取

“访问”包含每个门户中每个事件的多个票证类型。我需要将这些组合起来,以获得每个门户的扫描访问列的总和,但包括具有“null”扫描访问权限的门户,以得到“0”。为了实现这一点,我使用了左连接:

选择portal.name\u portal,SUM(access.scan\u access)作为total\u scan
从portal左侧加入portal.id\u portal=access.id\u portal上的访问
其中portal.id_地点=$venueId
按门户进行分组。id\u门户
按门户订购。id\u门户ASC
这意味着我得到了以下信息:

  • 门户1-空
  • 入口2-40
  • 入口3-33
  • 门户4-空
但是,当考虑到事件(id_事件)时,我需要得到上述结果时,我遇到了一个问题,因为当我使用以下内容时:

选择portal.name\u portal,SUM(access.scan\u access)作为total\u scan
从portal左侧加入portal.id\u portal=access.id\u portal上的访问
其中portal.id_场所=$venueId和access.id_事件=20
按门户进行分组。id\u门户
按门户订购。id\u门户ASC
我得到:

  • 入口2-40
  • 入口3-33

这是有意义的,因为只有这两行具有id\u事件值。但是我怎样才能在不失去其他门户的情况下考虑到这个问题呢?另外,在sql中是否有方法在返回结果时将“null”设为零?(我可以在使用php之后修复null,但想看看是否有可能)

要将null转换为0,请使用此

 COALESCE(col, 0)
在您的示例中,它将是

     SUM(COALESCE(access.scan_access, 0)) AS total_scan

通过将
access.id\u event=20
放在
WHERE
子句中,可以将
左连接变成
内部连接。将
access.id\u event=20
移动到您的加入条件中,以保留您的
左加入
。正如@echo_me所提到的,您可以使用
COALESCE()
来去除零。我会把它放在
SUM()
周围,而不是放在里面

选择portal.name\u portal,合并(SUM(access.scan\u access),0)作为总扫描
从门户左侧在portal.id_portal=access.id_portal和access.id_event=20上加入访问
其中portal.id_地点=$venueId
按门户进行分组。id\u门户
按门户订购。id\u门户ASC

你能举例说明你想要输出的方式吗?我不确定你编辑了什么ThinkingTiffi制作了它,因此SQL不是全部在一行上,并添加了格式提示,因此它是彩色的。啊,我不喜欢通常将它放在不同的行上。除了阅读还有什么好处吗?对于问题来说,阅读要容易得多。