sql - 如何从另一个表中获取引用值?

标签 sql sql-server

这不是我的工作,我对 SQL 的了解仍然很少,我的问题是获得如何解决这个问题的指导。我希望这个问题不是太笼统或毫无意义:

我在数据库中有几个表。其中很少有基本表格、国家列表、客户列表等。 这些基本表用于支持其他网格上 dropDownList 中的值,其中用户对某些字段使用预设值,并且还手动填写其他字段。像这样的事情:

enter image description here

现在,我正在制作一个动态报告,该报告指向我需要获取实际值而不是引用的表。

正如我所说,我遇到的问题是我正在处理的特定表中的那些预设值是 id_references (id_Country, id_Customer, ..),而我需要它们代表的实际值。 我应该怎么做才能获得实际值?如果我将报告指向不同的表,我就会失去记录之间的含义/链接。

最佳答案

例如,如果您尝试使用问题中显示的项目表中的 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) 来自您的提及表格名称
3) ON子句定义表之间的关系假设Projects表有一个列id_Country,它引用Countrys表中的id_Country定义这两个表之间的关系。
4)选择列列表、数据源(表)、它们的关系(On Clause)后,您可以过滤查询返回的行数,就像 id_Country
WHERE C.CountryName = 'UK' 将仅返回来自英国的结果。
5) 在 from 子句中,字母“C”和“P”是别名,因此我们不必再次键入完整的表名,使我们的代码更简单,更易于阅读和调试。

无论您需要连接多少个表才能获取所需的数据,只要您可以在查询中定义它们之间的关系,它就应该可以正常工作。 SQL Server 很少会在一张表中找到所有必需的数据,通常您会连接 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 关键字左侧表中的所有行,并且仅返回其他表中的匹配行。
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

关于sql - 如何从另一个表中获取引用值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19347703/

相关文章:

sql - 获取上一年的第一个日期

具有条件的两行的MySQL SUM

sql-server - FreeBSD + unixODBC + FreeTDS 上的 "Unknown host machine name."

sql - 如何在 SSIS 包中设置变量?

sql - SQL Server 中的 FIFO 查询

mysql - 选择不在started_date和stopped_date之间的updated_dates

php - SQL SELECT 中每隔一行的起点

sql - 令人困惑的 SELECT 语句

java - Cursor isAfterLast() 在到达最后一行时返回 true

mysql - 是否可以从不同的数据库中获取 LAST_INSERT_ID()?