PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [SQL]: 2 Fragen


Kenny1702
2007-10-03, 20:10:23
Zuerst sei gesagt, daß ich bin ein blutiger Anfänger bin, was SQL angeht.
Ich habe ein paar kleine Aufgaben zugeschickt bekommen, um mich mal zu testen. Bei einer Aufgabe denke ich vielleicht zu kompliziert.

Ich halte es jetzt ein wenig allgemein.

Das Ziel ist es, aus einer Tabelle einen View mit gewissen Datensätzen zu erschaffen.


Tabelle:

A | B | C | D | E
-----------------------------
a_11 |a_12 |a_13 |a_14 |a_15
a_21 |a_22 |a_23 |a_24 |a_25
a_31 |a_32 |a_33 |a_34 |a_35
a_41 |a_42 |a_43 |a_44 |a_45
a_51 |a_52 |a_53 |a_54 |a_55

View:

A | B | C | F | G
-----------------------------
a_11 |a_12 |a_13 |a_24 |a_25
a_31 |a_32 |a_33 |NULL |NULL
a_41 |a_42 |a_43 |a_54 |a_55

Aus der Aufgabenstellung geht nicht hervor, ob die Eigenschaften F und G schon in der Tabelle enthalten sind oder nicht. Kann ich mit "einfachen" Mittel 2 Zeilen miteinander in eine pressen?
Die Eigenschaften F und G hängen etwa wie folgt mit den anderen Werten zusammen: Wenn A=1 ist suche eine Zeile, sodaß in dieser A=0 und B identisch dem jetzigen B, D größer meinem jetzigen D und E kleiner meinem jetzigen E ist, dann ist F gleich dem D-Wert und G gleich dem E-Wert aus dieser gefundenen Zeile.

Ich hoffe, man kann verstehen, was ich meine.

Wenn F und G in der Tabelle existieren, ist es ja ganz einfach:

Create View Test As Select A, B, C, F, G From Table

Und noch eine 2. Frage hinterher. Kann man ein existierendes View erweitern, also noch eine Spalte anfügen?

gr@fz@hL
2007-10-03, 20:49:47
Die erste Frage hab ich nicht ganz verstanden, deshalb kann ich nur allgemein sagen, dass es CASE-Anweisungen gibt:

Select F = CASE
WHEN (irgend eine Bedingung) THEN Ausgabe 1
WHEN (ein andere Bedingung) THEN Ausgabe 2
ELSE Ausgabe 3
END

Vielleicht hilft das weiter.

Und zu zweitens: ja sollte mit
ALTER VIEW myview ADD COLUMN mycolumn

gehen

Kenny1702
2007-10-03, 23:01:30
Die erste Frage hab ich nicht ganz verstanden, deshalb kann ich nur allgemein sagen, dass es CASE-Anweisungen gibt:

Select F = CASE
WHEN (irgend eine Bedingung) THEN Ausgabe 1
WHEN (ein andere Bedingung) THEN Ausgabe 2
ELSE Ausgabe 3
END

Vielleicht hilft das weiter.

Selbst wenn ich die CASE-Anweisung nutzen würde, bleibt das Problem, daß ich in dem View einen Eintrag in der Zeile durch einen anderen aus "derselben" Spalte "ersetzen" möchte.
Im ersten Beitrag schrieb ich


A | B | C | F | G
-----------------------------
a_11 |a_12 |a_13 |a_24 |a_25

also sind in der ersten Zeile nun auch Einträge der 2. Zeile.