例如,如果您尝试通过在问题中显示的此项目表中使用 Country_ID 来获取国家/地区的名称,您可以执行类似的操作
SELECT C.CountryName_Colummn, C.SomeOtheColumn, ......
FROM Projects P INNER JOIN Countries C
ON P.id_Country = C.id_Country
WHERE SomeColum = 'Your Condition'
1) SELECT 子句您选择结果集中需要的列。
2) FROM you Mention table(s) name(s)
3) ON 子句定义表之间的关系说 Projects 表有一个 id_Country 列,它引用国家表中的 id_Country 定义了这两个表之间的关系。
4)在您选择了列列表、数据源(表)、它们的关系(On Clause)之后,您可以过滤从查询返回的行数,就像您可以像 id_Country
WHERE C.CountryName = 'UK'将仅从英国返回结果。
5) 在 from Clause 中,字母 'C' 和 'P' 是别名,因此我们不必再次输入完整的表名 n,使我们的代码更简单,更易于阅读和调试。
无论您必须加入多少个表才能获得所需的数据,只要您可以在查询中定义它们之间的关系表,它应该可以正常工作。SQL 服务器很少你会在一个表中找到所有需要的数据,通常你会连接 2-3 个表或更多表。例如,您想要一些存在于 3 个不同表中的数据,您可以将它们全部连接到一个查询中,如下所示......
SELECT C.CountryName_Colummn, C.SomeOtheColumn, ......
FROM Projects P INNER JOIN Countries C
ON P.id_Country = C.id_Country
INNER JOIN Table_3_Name T3
ON T3.CommonColumn = P.SomeCommonColumn (it will be a common column between table 3 and Projects OR Countries)
WHERE SomeColum = 'Your Condition'
但是你真的需要查看连接,因为你可以在表之间进行不同类型的连接,在这个例子中我使用了 INNER JOIN,它只返回所有这些表之间的匹配行,你可以做 LEFT JOIN 或 RIGHT JOIN。
LEFT JOIN返回 JOIN 关键字 LEFT 侧的表中的所有行,并且只返回其他表中的匹配行。
RIGHT JOIN从 JOIN 关键字右侧返回所有行,并且只从其他表中匹配行。
仅包含所需列的查询
Select customers.customer_name, Products.Product_type, Manufacturers.Manuf_name
from Projects inner join customers
on customers.cust_id= Projects.proj_cust_id
inner join Products
on Products.prod_id= Projects.proj_prod_id
inner join Manufacturers
on Manufacturers.man_id= Projects.proj_man_id
使用 Alias 将为您提供完全相同的结果,但易于阅读的代码也可以试试这个....
Select C.customer_name, Prod.Product_type, M.Manuf_name
from Projects Proj inner join customers C
on C.cust_id= Proj.proj_cust_id
inner join Products Prod
on Prod.prod_id= Proj.proj_prod_id
inner join Manufacturers M
on M.man_id= Proj.proj_man_id