2016-06-30 9 views
0

Ich arbeite derzeit an dem Versuch, die folgende MS SQL-Abfrage zu Informix zu konvertieren, aber ich bin nicht sicher, wie.Konvertieren einer MS SQL-Abfrage in eine Informix-Abfrage

SELECT  NumPlan.DNOrPattern, Device.Name, DeviceNumPlanMap.Display, TypeModel.Name AS Model, DeviceNumPlanMap.NumPlanIndex, 
         Device.AddOnModules 
FROM   DeviceNumPlanMap INNER JOIN 
         Device ON DeviceNumPlanMap.fkDevice = Device.pkid INNER JOIN 
         NumPlan ON DeviceNumPlanMap.fkNumPlan = NumPlan.pkid INNER JOIN 
         TypeModel ON Device.tkModel = TypeModel.Enum 
WHERE  (TypeModel.Enum <> '10') AND (TypeModel.Enum <> '12') AND (TypeModel.Enum <> '120') AND (TypeModel.Enum <> '90') AND 
         (TypeModel.Enum <> '73') and (TypeModel.Enum <> '72') and (TypeModel.Enum <> '80') AND (DeviceNumPlanMap.NumPlanIndex = '1') ORDER BY NumPlan.DNOrPattern, DeviceNumPlanMap.NumPlanIndex 

Jede Hilfe, wie Sie dies in eine Informix-Abfrage konvertieren, wäre sehr willkommen.

+0

Haben Sie versucht, es auszuführen? Welchen Fehler bekommst du? –

+0

Es scheint das Symbol <> nicht zu mögen – user1328147

+0

Normalerweise verwenden Sie '! =', Um mit Informix 'nicht gleich' anzugeben. Ich muss zugeben, dass ich vergessen habe, dass der SQL-Standard "<>" verlangt. Erfreulicherweise zeigen Experimente, dass Informix auch '<>' akzeptiert - getestet mit Informix 12.10.FC6 unter Mac OS X 10.11.5. Berücksichtigen Sie auch die Vorzüge von 'TypeModel.Enum NOT IN '(' 10 ',' 12 ',' 120 ',' 90 ',' 73 ',' 72 ',' 80 ')'. Wenn ich die Abfrage in der Frage für eine Reihe von leeren Tabellen ausführen, erhalte ich keinen Syntaxfehler. Welche Version von Informix verwenden Sie auf welcher Plattform? Verwenden Sie eine zwischengeschaltete Software, die SQL manipuliert? –

Antwort

1

In beide Datenbank, würde ich diese Abfrage als schreiben:

SELECT np.DNOrPattern, d.Name, npm.Display, tm.Name AS Model, npm.NumPlanIndex, 
     d.AddOnModules 
FROM DeviceNumPlanMap npm INNER JOIN 
    Device d 
    ON npm.fkDevice = d.pkid INNER JOIN 
    NumPlan p 
    ON npm.fkNumPlan = p.pkid INNER JOIN 
    TypeModel tm 
    ON d.tkModel = tm.Enum 
WHERE tm.Enum NOT IN ('10', '12', '120', '90', '73', '72', '80') AND 
     npm.NumPlanIndex = '1' 
ORDER BY np.DNOrPattern, npm.NumPlanIndex; 

Wenn die Datentypen von Enum oder NumPlanIndex keine Strings sind, dann die einfachen Anführungszeichen entfernen.

Dies sollte in beiden Datenbanken funktionieren. Aber ich denke, dein Original sollte es auch.

Verwandte Themen