【发布时间】:2018-08-12 20:21:18
【问题描述】:
我写了这个函数,但是它没有返回地址表信息。
CREATE FUNCTION returnInfo()
RETURNS TABLE
AS RETURN
SELECT
SalesLT.Customer.CustomerID,
FirstName,
LastName,
Phone
FROM SalesLT.Customer
RIGHT JOIN SalesLT.Address
ON SalesLT.Customer.CustomerID = SalesLT.Address.AddressID;
CustomerID 和 AddressID 都是表的主键,它们不共享外键。关于如何将地址表加入我选择的任何想法?
【问题讨论】:
-
你不能在视图中创建用户定义的函数.....检查the official documentation on
CREATE VIEW- 它基本上只是一个SELECT(可能有JOINs和WHERE) - 但你绝对不能创建视图定义中的其他数据库对象 -
如果 SalesLT.Customer 和 SalesLT.Address 表不共享外键,那么这让我怀疑您在 SalesLT 的某个地方有一个表,该表具有这两个表的外键。可能类似于 SalesLT.CustomerAddress。但您的查询似乎只使用来自客户的字段。除非您需要加入似乎不需要的地址。
-
是的,SalesLT.CustomerAddress 确实包含两个外键。我应该在两个外键上加入 CustomerAddress 吗?
-
CustomerAddress 应该加入到 Customer 和 address,它们不应该直接加入到对方。请注意,这意味着一个客户可以有两个以上的地址,或者一个地址可以有多个客户。
-
@Javascripttech 你已经按照你的方式编辑了你自己的问题。我回滚了你的破坏性编辑。随意删除此问题,但不要破坏问题内容。
标签: sql-server view user-defined-functions