MySql 选择查询连接没有给出预期的答案

标签 mysql sql inner-join

我有一个简单的技术人员考勤系统。出勤天数存储在名为 tech_logins 的表中。每个日期每个技术人员有 1 条记录。技术人员执行的工作存储在名为日志的表中。该表包含技术人员完成的所有工作。它还具有两个与 tech_logins 表相关的字段。它们被称为technical_id 和dos。

日志表可以包含链接到技术人员但未链接 dos 的作业,即当有人为技术人员输入作业但在技术人员不在场的日期 (dos) 时。

我正在尝试为每个技术人员获取所有工作,仅针对与 tech_logins 表中的 login_date 链接的 dos 日期。此 SQL 仅返回单个技术人员和单个日期的记录:

SELECT tech_logins.tech_id, 
       tech_logins.login_date 
FROM   tech_logins 
INNER JOIN `logs`
       ON tech_logins.login_date = `logs`.dos 
       AND tech_logins.tech_id = `logs`.technician_id 

任何帮助或指南将不胜感激。

表结构:

CREATE TABLE `tech_logins` (
  `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `tech_id` int(10) DEFAULT NULL,
  `login_date` date DEFAULT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `tech_id` (`tech_id`,`login_date`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

CREATE TABLE `logs` (
  `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `completed` date DEFAULT NULL,
  `patient_first_name` varchar(20) NOT NULL,
  `patient_last_name` varchar(20) NOT NULL,
  `dob` date DEFAULT NULL,
  `sex` varchar(1) DEFAULT NULL,
  `dos` date DEFAULT NULL,
  `study_id` int(10) DEFAULT NULL,
  `ICD9` varchar(10) DEFAULT NULL,
  `ref_doctor_id` int(10) DEFAULT NULL,
  `insurance_id` int(10) DEFAULT NULL,
  `insurance_no` varchar(20) DEFAULT NULL,
  `authorization_no` varchar(20) DEFAULT NULL,
  `referral_no` varchar(20) DEFAULT NULL,
  `location_id` int(10) DEFAULT NULL,
  `reading_doctor_id` int(10) DEFAULT NULL,
  `technician_id` int(10) NOT NULL,
  `biller` int(10) DEFAULT NULL,
  `billed` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=79 DEFAULT CHARSET=latin1;

最佳答案

您的查询结构显示正确。您可能会遇到数据问题,即两个表中的数据实际上在两个连接列上不正确匹配。

为什么不尝试首先从 tech_logins 中分别选择一小部分两列。然后使用 tech_logins 返回的几行的两列查询日志表。一次一步,您就会找到答案。您正确执行了 sql。

关于MySql 选择查询连接没有给出预期的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15285275/

相关文章:

php - php中的require_once没有这样的文件或目录错误

SQL IN 语句使用类似的语法?

sql - INNER JOIN 与 INNER JOIN (SELECT . FROM)

r - dplyr inner_join 与字符列上的 NA

sql-server - 使用全文在多个表中搜索

php - 如何从 MYSQL 数据库获取登录系统的 IP?

php - 如何将当前记录移动到另一个表并删除当前记录

MySQL显示重复行

sql - 在 Informix SQL 中将时间戳舍入到一整小时

mysql - 每周显示数据