首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql select查询联接未提供预期的答案

MySql select查询联接未提供预期的答案
EN

Stack Overflow用户
提问于 2013-03-08 09:39:47
回答 2查看 103关注 0票数 0

我对技术人员有一个简单的考勤系统。出席的天数存储在一个名为tech_logins的表中。每个技术员每天都有一条记录。技术人员执行的作业存储在一个名为logs的表中。此表包含技术人员完成的所有工作。它还有两个与tech_logins表相关的字段。它们被称为technician_id和dos。

日志表可以包含链接到该技术人员但未链接to的职务,即,当某人为该技术人员输入工作时,但在该技术人员不在的日期( dos )。

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

代码语言:javascript
复制
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 

任何帮助或指南都将非常感谢。

表结构:

代码语言:javascript
复制
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;
EN

回答 2

Stack Overflow用户

发布于 2013-03-08 09:46:24

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

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

票数 2
EN

Stack Overflow用户

发布于 2013-03-08 09:59:36

更改日期与以下联接

代码语言:javascript
复制
 DATE_FORMAT( tech_logins.login_date, '%d %m     %Y')
 = DATE_FORMAT( 'logs'.dos, '%d %m %Y')

如果这不起作用,请更新,而不是将inner join替换为left join,以检查是否有任何日期问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15285275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档