JOIN如何在SQL中完全正常工作

时间:2015-11-13 22:00:27

标签: sql database join

我知道通过按属性组合两个或多个表来加入工作,所以如果你有两个表都有三列并且都有列INDEX,如果你使用table1 JOIN table2,你会得到包含5列的新表格,但如果您没有table1table2共享的列,该怎么办?你还可以使用JOIN还是必须使用TIMES

4 个答案:

答案 0 :(得分:2)

Join不是组合表的方法。它是一种从2个或更多表中选择记录(和选定字段)的方法,其中查询中的每个表必须带有一个字段,该字段可以与查询中另一个表中的字段匹配。匹配的字段不必具有相同的名称,但必须携带相同类型的数据。缺乏这一点就像试图通过加入纽约市的车牌列表来创造意义,而华盛顿州的伐木工人的身高数据 - 没有意义。 Ex :)

Select h.name, h.home_address, h.home_phone, w.work_address,      
w.department 
from home h, work w
where h.employee_id = w.emp_id

只要两列:employee_id和emp_id都携带相同的信息,此查询就可以正常工作

答案 1 :(得分:0)

在Microsoft Access中,要从连接到两列表的三列表中获取五行,您可以使用:

SELECT Table1.*, Table2.* FROM Table1 INNER JOIN Table2 ON Table1.Field1 = Table2.Field1;

你可以查询你想要的任何东西,然后加入你想要的任何东西。

如果您的一张桌子是人员列表,而另一张桌子是汽车列表,并且您想看到人们的名字也是汽车的型号,您可以这样做:

SELECT Table1.Name, Table1.Age, Table2.Make, Table2.Year
FROM Table1 INNER JOIN Table2 ON Table1.Name = Table2.Model;

只有当Name与Model相同时才显示记录。

这与我使用过的任何关系型DBMS中的表连接是一样的。

答案 2 :(得分:0)

您是对的,即使他们没有共享列,您也可以加入两个表。

Join使用primary来防止在用户尝试插入没有父记录或类似内容的记录时插入或删除时出错。

join方法有很多类型,你可以在这里查看它们: http://dev.mysql.com/doc/refman/5.7/en/join.html

LEFT JOIN:从第一个表中选择所有记录,然后从第二个表中选择满足ON子句后的条件的所有记录。

答案 3 :(得分:-3)

如果他们不共享公共列,则无法加入表。如果你能找到一个包含table1和table2的公共列的第3个表,你可以让它们以这种方式加入。所以将table2和tabl3连接到公共列上,然后将table3连接回公共列上的table1。