in

DevWare GmbH

Blog- und Forum-Seite der Firma DevWare GmbH

Tibor Csizmadia

UNION Statement - Spaltenreihenfolge entscheident!

Heute habe ich mal wieder eine Kleinigkeit zu SQL gelernt. Ich hatte ein UNION Statement um zwei Tabellenabfragen als eine Tabelle an mein DataReader zurückzugeben:

   Select 0 as OrderID, null as Firma, null as FirmID
UNION
   select 1 as OrderID, Firm.Firmname, Convert(nvarchar(80),Firm.FirmID) from Firm

So wird jeder erwarten, dass alle Firmeneinträge plus der null Eintrag in einer Tabelle zurückgegeben wird, ist auch so, leider hatte ich mich in der Codierung des SQL Statements vertan (Es war auch etwas umfangreicher aber für diese Demo ist es so besser ersichtlich) und aber die Spalten der beiden SELECT Statements nicht in der gleichen Reihenfolge :

   Select 0 as OrderID, null as Firma, null as FirmID
UNION
   select 1 as OrderID,  Convert(nvarchar(80),Firm.FirmID), Firm.Firmname from Firm

Ich hätte erwartet, dass ein SQL-Fehler geworfen wird, stattdessen wird das Statement fehlerfrei ausgeführt, nur die Inhalte sind von der zweiten Tabelle mit den beiden Spalten vertauscht. (Wahrscheinlich da beide Spalten den gleichen Datentyp hatten)!

Tja SQL ist leider nicht typ-safe und durch das "reincodieren" der SQL Statements in den C# Code als string kann auch keinerlei Unterstützung durch die IDE gegeben werden...

 

 

Comments

No Comments
Copyright (c) 2008 DevWare GmbH. All rights reserved.
Powered by Community Server (Non-Commercial Edition), by Telligent Systems