| 

.NET C# Java Javascript Exception

3
Ich habe eine View erstellt, die mir eine bestimmte Menge an Daten zurückgibt und an Windows-Forms Steuerelemente gebunden wird.

SELECT * FROM myTable WHERE (TypeDate = 'True') ORDER BY TypeName


Nun möchte ich aber zu den Daten, die in der Datenbank stehen noch eine zusätzliche Zeile hinzufügen (um in der GUI anzeigen zu können, dass hier noch kein Wert gesetzt wurde)

Geht dass? Kann eine View mehr als nur einen SELECT beinhalten?
19.02.2012
MyKey0815 1,6k 2 9
Generelle Antwort: Es gibt nur ein SELECT. Allerdings sind verschachtelte SELECTs möglich, oder Stored Procedures, die zusätzliche Infos beisteuern, Systemvariable, z.B. @@ROWCOUNT. Du musst also schon sagen, was genau du willst, um brauchbare Vorschläge zur Umsetzung zu bekommen.
mupan 19.02.2012
1 Antwort
4
Dein Thema per View zu lösen halte ich für, naja, ungeschickt :) Aber der Reihe nach. Um Deine Frage konkret zu beantworten: ja, das geht.

Nehmen wir mal an Deine Tabelle hat drei Spalten: ID, Wert1, Wert2
dann würde das Statement wie folgt aussehen:

SELECT
NULL AS ID,
'-- nichts ausgewählt --' AS Wert1,
NULL AS Wert2

UNION

SELECT * FROM myTable


Wichtig dabei ist, dass die "Abfrage" welche den Dummy-Datensatz liefert genau die gleichen Spalten zurückgibt wie die Abfrage auf die tatsächliche Tabelle, sonst funktioniert das UNION nicht.

Bessert wäre es also die Abfrage wie folgt zu schreiben:
SELECT
NULL AS ID,
'-- nichts ausgewählt --' AS Wert1,
NULL AS Wert2

UNION

SELECT
ID,
Wert1,
Wert2
FROM myTable


Dies hat zur Folge, dass dieses Abfragekonstrukt auch noch dann funktioniert, wenn Du Deiner Tabelle neue Spalten hinzufügst. Mit dem "SELECT * FROM" gäbe es sonst einen Fehler.

Aber wie gesagt ist das nicht unbedingt die schönste Lösung. Besser wäre es (zumindest meiner Ansicht nach) die Daten in eine Liste zu laden. Dann fügst Du der Liste einen zusätzlichen Eintrag vorne an (per Code). Und dann bindest du die manuell geänderte Liste an Dein Steuerelement.
19.02.2012
SensenMannLE 1,2k 2 9

Stelle deine Sql-Frage jetzt!