Sql asn没有指出。我只是提出了左连接,因为它可能需要考虑,而不是因为我认为您的代码是错误的。可能太复杂了,但这是一个伪代码,只显示问题的相关数据。真正的查询要大得多,可能过于复杂,但这是一个伪代码,只显示问题的相关数据。真正的疑问要大得多。 PrimaryK
Sql asn没有指出。我只是提出了左连接,因为它可能需要考虑,而不是因为我认为您的代码是错误的。可能太复杂了,但这是一个伪代码,只显示问题的相关数据。真正的查询要大得多,可能过于复杂,但这是一个伪代码,只显示问题的相关数据。真正的疑问要大得多。 PrimaryK,sql,sql-server-2008,database-design,view,Sql,Sql Server 2008,Database Design,View,asn没有指出。我只是提出了左连接,因为它可能需要考虑,而不是因为我认为您的代码是错误的。可能太复杂了,但这是一个伪代码,只显示问题的相关数据。真正的查询要大得多,可能过于复杂,但这是一个伪代码,只显示问题的相关数据。真正的疑问要大得多。 PrimaryKey | Name | Value_FK | Number_FK ------------------------------------------- 66 | NameA | 1 | 2 77
asn没有指出。我只是提出了左连接,因为它可能需要考虑,而不是因为我认为您的代码是错误的。可能太复杂了,但这是一个伪代码,只显示问题的相关数据。真正的查询要大得多,可能过于复杂,但这是一个伪代码,只显示问题的相关数据。真正的疑问要大得多。
PrimaryKey | Name | Value_FK | Number_FK
-------------------------------------------
66 | NameA | 1 | 2
77 | NameB | 3 | 4
PrimaryKey | Value
-------------------
1 | 238
2 | 456
3 | 100
4 | 200
Name | Value | Number
-------------------------
NameA | 238 | 456
NameB | 100 | 200
CREATE VIEW ViewName
AS
SELECT DISTINCT a.Name as 'Name', ????? as 'Value', ????? as 'Number'
FROM TableA a, TableB b
CREATE VIEW ViewName
AS
WITH Name AS
( SELECT DISTINCT a.Name FROM TableA a )
Value AS
(
SELECT DISTINCT b.Value as 'Value' FROM TableA a, TableB b
WHERE b.PrimaryKey = an.ValueA_FK
),
Number AS
(
SELECT DISTINCT b.Value as 'Number'
FROM TableA a, TableB b
WHERE a.PrimaryKey = an.ValueB_PrimaryKey
)
SELECT DISTINCT
* FROM Name, Value, Number
Name | Value | Number
-------------------------
NameA | 100 | 200
NameB | 100 | 200
NameA | 100 | 456
NameB | 100 | 456
NameA | 238 | 200
NameB | 238 | 200
NameA | 238 | 456
NameB | 238 | 456
SELECT a.Name as 'Name', b1.Value as 'Value', b2.Value as 'Number'
FROM TableA a
inner join TableB b1
on
a.Value_FK = b1.PrimaryKey
inner join TableB b2
on
a.Number_FK = b2.PrimaryKey
select t1.Name, value.Value, number.Value as Number
from TableA t1
inner join TableB value on value.PrimaryKey = t1.Value_FK
inner join TableB number on number.PrimaryKey = t1.Number_FK