草庐IT

mysql - 左连接不起作用

coder 2023-10-22 原文

我这里有一个查询,需要检索员工的 employeeid、姓名、开始日期、期间、经理、业务线、单位、子单位和状态

Employee 表连接到其他表,我提供了我需要的员工的 employeeid,我将它连接到另一个表,这样如果员工没有值,它只会返回 null。我没有得到我所期望的。我哪里出错了?

 select employee.id as 'Employee ID', concat_ws(' ',employee.first_name, employee.last_name) as 'Name', 
date_started as 'Start date', os_form.os_event_id as 'Period', 
(select concat_ws(' ',employee.first_name, employee.last_name) from employee where id = os_form.created_by) as 'Manager', 
business_line.name as 'Business_line', unit.name as 'Unit', sub_unit.name as 'Sub Unit', os_form.status as 'Status'
from employee
LEFT JOIN os_form 
    ON (os_form.employee_id = employee.id and os_form.employee_id 
    IN (110013
,110015
,110002
,110042
,110057
,110065
,110060
,110062
,110092
,110072
,110095
,110100
,110104
,110106
,110107
,110109
,110077
,110114
,110117
,110121
,110123
,110073
,110128
,110138
,110147
,110153
,110162
,110173
,110178
,110183
,110211
,110215
,110216
,110218
,110219
,110224
,110226
,110230
,110245
,110249
,110257
,110260
,110262
,110264
,110266
,110268
,110269
,110272
,110275
,120076
,120083
,120090
,120099
,120095
,120101
,120108
,120109
,120110
,120112
,120119
,120127
,120128
,120132
,120133
,120134
,120145
,120146
,120142
,130010
,130012
,130016
,130017
,130018
,130020
,130021
,130006
,130034
,130035
,130038
,130041
,130029
,130046
,130047
,130056
,130013
,130027
,130028
,130030
,130037
,130040
,130043
,130044
,130048
,130049
,130054
,130055
,130031
,130050
,130064
,130065
,130084
,130092
,130094
,130095
,130096
,130097
,130098
,130099
,130105
,130051
,130059
,130111
,130112
,130115
,130116
,130127
,130136
,130109
,140002
,140105
,140158
,140178
,140304
,140171
,140358
,140352
,140354
,140356
,140401
,140407
,140410
,140411
,140409
,140412
,140417
,140418
,140419
,140422
,140423
,150003
,150132
,150141
,150143
,150167
,150193
,150199))
left join business_line on os_form.business_line_id = business_line.id
left join unit on unit.id = os_form.unit_id
left join sub_unit on sub_unit.id = os_form.sub_unit_id
WHERE os_event_id = 2015
group by employee.id

最佳答案

您的问题与 WHERE 语句有关。更准确地说,是检查 os_form.employee_id 是否存在于标识符列表中。

您应该将该检查移动到 LEFT JOIN ... ON ()

LEFT JOIN os_form 
    ON (os_form.employee_id = employee.id and os_form.employee_id IN (110013,110015, ...))

或者将其保存在 WHERE 中并同时检查 NULL:

WHERE (os_form.employee_id IS NULL or os_form.employee_id IN
(
  110013,110015,110002,110042,110057,110065,110060,110062,110092,110072,110095,110100,110104,110106,110107,110109,110077,110114,110117,110121,110123,110073,110128,110138,110147,110153,110162,110173,110178,110183,110211,110215,110216,110218,110219,110224,110226,110230,110245,110249,110257,110260,110262,110264,110266,110268,110269,110272,110275,120076,120083,120090,120099,120095,120101,120108,120109,120110,120112,120119,120127,120128,120132,120133,120134,120145,120146,120142,130010,130012,130016,130017,130018,130020,130021,130006,130034,130035,130038,130041,130029,130046,130047,130056,130013,130027,130028,130030,130037,130040,130043,130044,130048,130049,130054,130055,130031,130050,130064,130065,130084,130092,130094,130095,130096,130097,130098,130099,130105,130051,130059,130111,130112,130115,130116,130127,130136,130109,140002,140105,140158,140178,140304,140171,140358,140352,140354,140356,140401,140407,140410,140411,140409,140412,140417,140418,140419,140422,140423,150003,150132,150141,150143,150167,150193,150199
))

您可能还需要 LEFT JOIN 所有其他联接。

关于mysql - 左连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32436986/

有关mysql - 左连接不起作用的更多相关文章

  1. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  2. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  3. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  4. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  5. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  6. ruby-on-rails - "assigns"在 Ruby on Rails 中有什么作用? - 2

    我目前正在尝试学习RubyonRails和测试框架RSpec。assigns在此RSpec测试中做什么?describe"GETindex"doit"assignsallmymodelas@mymodel"domymodel=Factory(:mymodel)get:indexassigns(:mymodels).shouldeq([mymodel])endend 最佳答案 assigns只是检查您在Controller中设置的实例变量的值。这里检查@mymodels。 关于ruby-o

  7. ruby-on-rails - 连接字符串时如何在 <%=%> block 内输出 html_safe? - 2

    考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://

  8. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  9. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

  10. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

随机推荐