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...