2016-11-01 3 views
-1
nicht
SELECT two.WorkOrderID, 
     te.EquipmentID, 
     tm.MaterialID, 
     CodMaterial, 
     MaterialName, 
     EquipmentName, 
     GoalPriceEnergyPerUnit, 
     pt.ParameterTypeID 
FROM T_WorkOrders two 
     LEFT OUTER JOIN T_Equipment te 
        ON te.EquipmentID = two.EquipmentID 
     LEFT OUTER JOIN T_Materials tm 
        ON tm.MaterialID = two.MaterialID 
     LEFT JOIN T_Parameter_Type pt 
       ON ea.ParameterTypeID = pt.ParameterTypeID 
WHERE WorkOrderNumber = 2 
     AND tm.MaterialID = 417 
     AND te.EquipmentID = 1076 
     AND ea.ParameterTypeID = 4918 
+1

Ihre Abfrage verweist auf einen Tabellenalias 'ea', aber Sie haben keine Tabelle mit diesem Alias. –

+0

Welche Art von Ergebnis erwarten Sie? Was möchten Sie tun? – Daniel

Antwort

0

gerade abgeschlossen, was .. in den Kommentaren gesagt wurde

Sie Tabellen-Aliases in der Abfrage definiert haben gebunden sein könnte wie unten

T_Equipment te 
T_Materials tm 
T_Parameter_Type pt 

und schließlich werden Sie eine Spalte mit einem Alias ​​beziehen, die nicht in einem der oben genannten ist ..

ea.ParameterTypeID

verweisen, so dass Spalte den Aliasnamen verwendet, für die die Tabelle

+0

Ich habe es versucht, aber es hat nicht funktioniert SELECT zwei.WorkOrderID, te.EquipmentID, tm.MaterialID, CodMaterial, MaterialName, EquipmentName, GoalPriceEnergyPerUnit, pt.ParameterTypeID FROM T_WorkOrders zwei LINKE OUTER JOIN T_Equipment te ON te.EquipmentID = zwei. EquipmentID LINKS OUTER JOIN T_Materials tm ON tm.MaterialID = two.MaterialID links OUTER join T_Parameter_Type pt link join T_Ausstattung_Adresse ea on ea.ParameterTypeID = pt.ParameterTypeID WHERE WorkOrderNumber = 2 AND tm.MaterialID = 417 UND te.EquipmentID = 1076 AND pt .ParameterTypeID = 4918 –

0

Sie gehört verbinden nicht Ihre Tabellen, weil Sie den falschen Alias ​​verwenden. Versuchen Sie Blick auf Ihre Tabellen

T_Equipment

MaterialID

T_WorkOrders

zu sehen, die man eine Spalte, die Sie können auf 'Verbinden' mit ParameterTypeID. Ich kann Ihnen nicht mehr helfen, da Sie nicht genug Informationen über Ihre Tabellen und das, was Sie wirklich tun wollen, gegeben haben. Aber hier ist ein Versuch sowieso

SELECT two.WorkOrderID, 
     te.EquipmentID, 
     tm.MaterialID, 
     CodMaterial, 
     MaterialName, 
     EquipmentName, 
     GoalPriceEnergyPerUnit, 
     pt.ParameterTypeID 
FROM T_WorkOrders two 
     LEFT JOIN T_Equipment te 
      ON te.EquipmentID = two.EquipmentID 
     LEFT JOIN T_Materials tm 
      ON tm.MaterialID = two.MaterialID 
     LEFT JOIN T_Parameter_Type pt 
     (-- this is not correct syntax 
      ON te.ParameterTypeID = pt.ParameterTypeID 
      ON tm.ParameterTypeID = pt.ParameterTypeID 
      ON two.ParameterTypeID = pt.ParameterTypeID 
     ) 
WHERE WorkOrderNumber = 2 
     AND tm.MaterialID = 417 
     AND te.EquipmentID = 1076 
     AND ea.ParameterTypeID = 4918 

-Code oben ist Beispiel für mögliche Anwendungen von LEFT JOIN und ON, wo ich verschiedene Tabellen bin zu verbinden. Jetzt, wie Sie im Kommentar sehen können, wird dies nicht funktionieren, da der Code zwei ON-s extra hat. Alles, was ich hier versuche, ist, dir mögliche Kombinationen zu zeigen, die du vielleicht verpasst hast.

Auch der Code, den Sie in Kommentaren zu @TheGameiswar angegeben haben, ist nicht korrekt.

SELECT two.WorkOrderID, 
     te.EquipmentID, 
     tm.MaterialID, 
     CodMaterial, 
     MaterialName, 
     Equipm‌​entName, 
     GoalPriceEne‌​rgyPerUnit, 
     pt.Parame‌​terTypeID 
FROM T_WorkOrders two 
    LEFT JOIN T_Equipment te 
     ON te.EquipmentID = two.EquipmentID 
    LEFT JOIN T_Materials tm 
     ON tm.MaterialID = two.MaterialID 
    LEFT JOIN T_Parameter_Type pt 
     --ON is missing, maybe something like 
     -- pt.SomeID = two.SomeID 
    LEFT JOIN T_Equipment_Address ea 
     ON ea.ParameterTypeID=pt.ParameterTypeID 
WHERE WorkOrderNumber=2 
     AND tm.MaterialID = 417 
     AND te.EquipmentID = 1076 
     AND pt.ParameterTypeID = 4918 

Es fehlt eine ON-Anweisung wie im Code-Kommentar angezeigt. Versuche das zu beheben. Auch die Verwendung von Microsoft SQL Server Management Studio hilft beim Schreiben von SQL-Code, da es Sie warnt, wenn Sie etwas verpassen. Außerdem benutze ich manchmal visuelle Erinnerungen für JOIN, nur um sicher zu sein, was ich tue, oft dieses von codinghorror.

+0

Sie liegen falsch, weil es keine Spalte in der Tabelle T_WorkOrders namens ParameterTypeID gibt, so dass ich die ID nicht vergleichen kann –

+0

Es ist nicht der Name der Spalte, der wichtig ist, sondern der Primärschlüssel, die Fremdschlüsselbeziehung.Die Frage ist, welche Daten haben Sie von T_Parameter_Type benötigen, wenn Sie sicher sind, müssen Sie etwas aus dieser Tabelle sollten Sie KEY-Spalte haben, die jede Zeile identifiziert, oft NameOfColumnID (endend mit ID ist wichtig). Danach sehen, wenn Sie unter Verwendung dieser ID-Spalte, die Spalte mit einer anderen Tabelle verbinden können. – Daniel

Verwandte Themen