2016-11-30 11 views
0

Ich konvertiere eine alte gespeicherte Prozedur für eine ältere App in eine neuere App."Ungültiger Spaltenname" beim Synchronisieren von Tabellen

SELECT ContainerID, SizeID.Desc, TypeID.Desc, UOMID.Desc 
FROM [Online].dbo.Master 
INNER JOIN [Online].dbo.Type TypeID ON Master.TypeID = TypeID.NumID 
INNER JOIN [Online].dbo.Size SizeID ON Master.SizeID = SizeID.NumID 
INNER JOIN [Online].dbo.Measure MeasureID ON Master.MeasureID = MeasureID.NumID 

Als ich dies laufe ich bin für die die drei Säulen oben in der anderen Datenbank einen ungültigen Spaltennamen Fehler immer ich sollte zu synchronisieren, und ich bin nicht sicher, warum.

+0

Es ist unwahrscheinlich, dass dieses Problem etwas mit gespeicherten Prozeduren zu tun hat, und wahrscheinlich, dass es einfach von Bedeutung ist, die Originaltabellen der Felder in der SELECT-Klausel nicht anzugeben; und möglicherweise Probleme, die von dem Versuch herrühren, Tabellen an ihren Aliases und nicht an einem Feld zu verbinden (oder Feldnamen als Tabellenaliase zu verwenden). _Auch dies ist nicht MySQL, obwohl es ähnliche Beschwerden über eine solche Abfrage hätte. _ – Uueerdo

+0

Ich habe Ihre gegenseitig inkompatiblen dbms-Tags entfernt. Fügen Sie das einzelne Tag für das von Ihnen verwendete dbms hinzu. – Blorgbeard

Antwort

0

Mehrere Tabellen haben dasselbe Feld, daher weiß die Engine nicht, auf welches Feld Sie sich beziehen. Und diesen Mehrdeutigen Fehler verursachen.

SELECT ContainerID, SizeID, TypeID, UOMID 
          ^^ 
          can came from Master or Type 

Verwendung so etwas wie

SELECT ContainerID, Master.SizeID, Master.TypeID, UOMID 

Wenn Sie Werte wollen bringen aus beiden Tabellen, müssen Sie Alias ​​verwenden, um diferenciate.

SELECT ContainerID, Master.SizeID, 
     Master.TypeID firstType, 
     Type.TypeID secondType 
+0

Vielen Dank – user7101339

Verwandte Themen