Folks, 所有我期望的是扩展INNER JOIN。让我谈谈点。我有两个表部门& Emp。一个部门可以有多个Emp的&而不是其他方式。SQL INNER JOIN仅在第一次匹配时返回父行值
Table Dept Dept_id Dept_Name 1 IT 2 HR 3 Other Table Emp Emp_id Dept_id Emp_Name 11 1 John 12 1 Jill 13 2 Jack 14 3 Jared 15 1 Jim 16 1 Jarret 17 2 Jacob I need to JOIN it on Dept_id Expected Results Dept_id Dept_name Emp_id Emp_Name 1 IT 11 John NULL NULL 12 Jill NULL NULL 15 Jim NULL NULL 16 Jarret 2 HR 13 Jack NULL NULL 17 Jacob 3 Other 14 Jared
希望我传达了我想要的东西。它只是一个常规的内部加入的外键约束。但是,我希望第一个表(Dept)中的值是NULL-ed,除了第一个匹配。话虽如此,我不在乎第一场比赛是什么。请看下面 - 只是Dept_id 1的结果。
Expected Results (Only for Dept_id = 1) It could be Dept_id Dept_name Emp_id Emp_Name 1 IT 11 John NULL NULL 12 Jill NULL NULL 15 Jim NULL NULL 16 Jarret OR Dept_id Dept_name Emp_id Emp_Name 1 IT 15 Jim NULL NULL 12 Jill NULL NULL 11 John NULL NULL 16 Jarret OR Two other possibilities.
在此先感谢。尽管它是一个简单的例子,但对于很长的解释抱歉。
你会尝试左连接吗? – DevelopmentIsMyPassion 2013-02-08 17:24:25
左连接不会得到他们正在寻找的结果。看起来更像他们试图对结果进行分组,并且只允许Dept_id和Dept_name中每个部门的第一个匹配的值。我很好奇你为什么要这么做,因为这会让数据显示吉尔吉姆和贾瑞特没有任何部门。正确的做法是获得所有列中的值,并处理代码中用于显示结果的格式。随着所要求的内容,如果你改变客户端上的排序,你将有不可读的数据 – TimWagaman 2013-02-08 17:29:16
你是对的。这是一个疯狂的查询。我正在尝试做一个我的应用程序应该做的部分。但是,我确信有一种方法可以通过查询来完成并且想知道这一点。感谢评论。 – Yogi 2013-02-08 17:51:56