MySQL 连接未按预期运行

标签 mysql join left-join database-view

我创建了一个 MySQL View 来从四个不同的表中获取数据:

CREATE VIEW `documents_scannes_view` AS 
select `ds`.`id_document` AS `id_document`,
       `ba`.`num_boite` AS `num_boite`,
       `ds`.`annee` AS `annee`,
       `ds`.`ref_document` AS `ref_document`,
       `ds`.`num_client` AS `num_client`,
       `cl`.`nom_client` AS `nom_client`,
       `ds`.`nbre_a4` AS `nbre_a4`,
       `ds`.`nbre_a3` AS `nbre_a3`,
       `ds`.`nbre_autres` AS `nbre_autres`,
       ((`ds`.`nbre_autres` + `ds`.`nbre_a3`) + `ds`.`nbre_a4`) AS `nbre_total`,
       `ds`.`date_scan` AS `date_scan`,`ds`.`qualite` AS `qualite`,
       `ds`.`id_operateur` AS `id_operateur`,
       `ut`.`nom_complet` AS `nom_complet`,
       `ds`.`observations` AS `observations`,
       `ds`.`chemin` AS `chemin` 
from (((`boite_archive` `ba` left join `documents_scannes` `ds` on((`ds`.`num_boite` = `ba`.`num_boite`))) 
                             left join `clients` `cl` on((`ds`.`num_client` = `cl`.`num_client`))) 
                             left join `utilisateurs` `ut` on((`ds`.`id_operateur` = `ut`.`id_user`)))

表格分别是:

  • documents_scannes:扫描文档列表
  • boite_archive:包含扫描文档的盒子列表
  • 客户:签发扫描文件的客户列表
  • utilisateurs:正在扫描文档的人员列表

连接是在表的主键上执行的。

我的目标是从每个盒子(boite_archive)中获取扫描文档(documents_scannes)的列表,同时获取客户名称(来自客户表)和完成扫描的运算符(operator)名称(来自表使用者)。

我的问题是当我:

SELECT * FROM documents_scannes_view WHERE num_boite = '1131';

1131 号邮箱是空的,没有扫描文档,但我得到一行:

enter image description here

谁能帮我指出错误的根源以及如何纠正它? 提前致谢。

我不确定查询底部的连接。这是问题的根源。当盒子处于 emprt 时,我该如何修复它以获得没有结果?

最佳答案

如果您不想选择连接列不匹配的空行,请更改为内部连接而不是左连接

from (((`boite_archive` `ba` inner join `documents_scannes` `ds` on((`ds`.`num_boite` = `ba`.`num_boite`))) 
                         left join `clients` `cl` on((`ds`.`num_client` = `cl`.`num_client`))) 
                         left join `utilisateurs` `ut` on((`ds`.`id_operateur` = `ut`.`id_user`)))

LEFT JOIN 关键字返回左表 (table1) 中的所有行,以及右表 (table2) 中的匹配行。当没有匹配时,右侧结果为NULL

enter image description here

Image ref .

关于MySQL 连接未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551188/

相关文章:

mysql - phpMyAdmin 存储过程说明

python - 来自 python 的 mysql 查询没有返回结果

python - 获取pymysql中执行的sql语句

r - data.table 更新对非等价自联接的奇怪行为

php - mysql join 未正确执行

python Pandas : merging 2 dataframes

mysql - 由于 'unknown database' 错误,无法执行 Rails 生成

mysql - 简单的MYSQL查询问题

php - Laravel 5.5 枢轴连接以获取主 MySQL 结果的枢轴值

mysql - SQL 内连接到左连接表