Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 我有一个存储过程,需要从同一个表中提取信息两次。如何使用相关名称?_Asp.net_Sql Server_Stored Procedures_Inner Join - Fatal编程技术网

Asp.net 我有一个存储过程,需要从同一个表中提取信息两次。如何使用相关名称?

Asp.net 我有一个存储过程,需要从同一个表中提取信息两次。如何使用相关名称?,asp.net,sql-server,stored-procedures,inner-join,Asp.net,Sql Server,Stored Procedures,Inner Join,我正在为游戏创建一个游戏作弊页面。我创建的表从动物表中获取组合动物的ID、它与之结合的基因以及新动物的ID来显示信息。该表如下所示: Creature Combos Table: ComboID (PK) | NewAnimalID (FK) | ComboAnimalID (FK) | GeneID (FK) | 我创建的从组合表中选择记录的过程通过基于组合、新动物和基因的ID连接动物和基因表,用组合动物、基因和新动物的信息填充我的数据列表: CREATE PROCEDURE [dbo].[

我正在为游戏创建一个游戏作弊页面。我创建的表从动物表中获取组合动物的ID、它与之结合的基因以及新动物的ID来显示信息。该表如下所示:

Creature Combos Table:
ComboID (PK) | NewAnimalID (FK) | ComboAnimalID (FK) | GeneID (FK) |
我创建的从组合表中选择记录的过程通过基于组合、新动物和基因的ID连接动物和基因表,用组合动物、基因和新动物的信息填充我的数据列表:

CREATE PROCEDURE [dbo].[SelectCreatureCombos]
AS
    SELECT * FROM [CreatureCombos]
    INNER JOIN [Animals] ON [CreatureCombos].[NewCreatureID] = [Animals].[AnimalId]
    INNER JOIN [Animals] ON [CreatureCombos].[ComboAnimalID] = [Animals].[AnimalId]
    INNER JOIN [Genes] ON [CreatureCombos].[ComboGeneID] = [Genes].[GeneId] ;
程序的预期结果:

(New) Animal (Name) | AnimalImg | AnimalAltText | AnimalToolTip | (Combo) Animal (name) | AnimalImg | AnimalAltText | AnimalToolTip | Gene | GeneImg | GeneAltText | GeneToolTip | 
当我运行页面时,出现以下错误:

The objects "Animals" and "Animals" in the FROM clause have the same exposed names. Use correlation names to distinguish them.

我必须承认我对SQL还是有点陌生;我可以像专业人士一样插入、选择和更新,但联接、别名和关联名称有点让我难以理解。如有其他建议,将不胜感激。谢谢

如果是这种情况,您只需在表名上提供一个
别名
,以避免名称冲突。乙二醇

SELECT * 
FROM [CreatureCombos]
     INNER JOIN [Animals] AS Animal1 
           ON [CreatureCombos].[NewCreatureID] = Animal1.[AnimalId]
     INNER JOIN [Animals] AS Animal2 
           ON [CreatureCombos].[ComboAnimalID] = Animal2 .[AnimalId]
     INNER JOIN [Genes] 
           ON [CreatureCombos].[ComboGeneID] = [Genes].[GeneId] 

我认为表设计中存在问题。在[CreatureCombos]中,删除列[NewCreatureID]和[ComboAnimalID]。添加一列调用AnimalID,第二列作为AnimalType int(1,2等)

因此,在这个设计中,只有一个Animal1连接,通过类型,您可以识别AnimalType

另外,如果t'row有更多的动物类型或类别,那么你会怎么做


因此,推荐的设计更灵活、更开放。

YAY!成功了!:-现在我需要做的就是处理我的控件和数据绑定。非常感谢你的帮助!