如何在sql server 2005中从没有外键的两个表中访问数据

时间:2011-06-27 06:44:39

标签: sql-server-2005

这里我有两个表,如员工和一个mobileoutbox表,但这两个表没有相互连接但我想从两个表访问数据我想匹配来自两个表的数据并生成报告.how来访问来自两张表没有外键? 表结构:

employee table              mobileoutbox table
empid                            srno 
empname                          mobileno
empphoneno                       textmsg
empaddress                       texttype

3 个答案:

答案 0 :(得分:0)

SELECT em.*, mo.* 
FROM employee em, mobileoutbox mo 
WHERE em.empphoneno = mo.mobileno

告诉我是否有任何不确定因素。

哦,如果你需要“匹配”数据,那么必须有一个外键,两个表之间的某种重叠信息,我希望你能理解这么多。我用我的例子中的电话号码作为外键,我不知道这是不是现实。

答案 1 :(得分:0)

SELECT e.empid, e.empname, e.empphoneno, e.empaddress, m.srno, m.mobileno, m.textmsg, m.texttype
FROM employee e, mobileoutbox m
WHERE e.empphoneno = m.mobileno

答案 2 :(得分:0)

也许您将外键约束与数据关系混淆。是的,您可能有两个数据匹配的表(即这些可能的电话号码)和数据约束。

如果您需要查询两列与匹配数据相关的表,只需使用INNER JOIN:

SELECT employee.*, mobileoutbox.*
FROM employee INNER JOIN mobileoutbox
ON employee.empphoneno = mobileoutbox.mobileno

然后您可能想要报告所有员工,即使是那些没有移动设备的员工。在这种情况下,您可以使用LEFT OUTER JOIN执行此操作:

SELECT employee.*, mobileoutbox.*
FROM employee LEFT OUTER JOIN mobileoutbox
ON employee.empphoneno = mobileoutbox.mobileno

如果员工的手机号码与右表中的手机号码相匹配,则会返回所有员工,而不会返回mobileoutbox字段的空数据。