Asp.net 我有一个存储过程,需要从同一个表中提取信息两次。如何使用相关名称?
我正在为游戏创建一个游戏作弊页面。我创建的表从动物表中获取组合动物的ID、它与之结合的基因以及新动物的ID来显示信息。该表如下所示: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].[
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!成功了!:-现在我需要做的就是处理我的控件和数据绑定。非常感谢你的帮助!