OOo Base SQL Wenn dann in Abfragen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Bus
*
Beiträge: 15
Registriert: Di, 10.01.2012 18:17

OOo Base SQL Wenn dann in Abfragen

Beitrag von Bus »

Moin,
ich habe eine Abfrage erstellt. jeweils mit 3 Spalten. "Spalte 1" "Spalte2 " "Spalte3"
Ich möchte jetzt in "Spalte" 3 das Ergebnis wie folgt haben.
Resulttat in "Spalte3" : Wenn "Spalte1" der Wert = 1, dann nehme den Wert von "Spalte2" ansonsten nehme den Wert aus "Spalte1"

Vielen Dank für die Unterstützung eines neuen Openoffice nutzer

und tschüss Bus
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: OOo Base SQL Wenn dann in Abfragen

Beitrag von DPunch »

Aloha

Code: Alles auswählen

SELECT CASE "Spalte1" WHEN 1 THEN "Spalte2" ELSE "Spalte1" END FROM DUAL
Bus
*
Beiträge: 15
Registriert: Di, 10.01.2012 18:17

Re: OOo Base SQL Wenn dann in Abfragen

Beitrag von Bus »

Moin, und vielen Dank für die Antwort.
Da ich noch nicht viel Erfahrungen im SQL habe , habe ich noch drei Nachfragen:

SELECT CASE "Spalte1" WHEN 1 THEN "Spalte2" ELSE "Spalte1" END FROM DUAL

1. Das Ergebnis soll ja in die "Spalte3" aber wor finde ich die in dem Code?
2. Was bedeutet "END FROM DUAL" im Code?
3. Kann ich den Begriff "SELECT" mehrfach im Code verwenden oder muss der Begriff nicht immer m Anfang stehen?

Vielen Dank für die nochmalige Mühe und einen schönen Tag

Bus
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: OOo Base SQL Wenn dann in Abfragen

Beitrag von DPunch »

Aloha
Bus hat geschrieben:1. Das Ergebnis soll ja in die "Spalte3" aber wor finde ich die in dem Code?
Das Konstrukt "CASE "Spalte1" WHEN 1 THEN "Spalte2" ELSE "Spalte1" END" ist Deine Spalte3.
Wenn Du willst, kannst Du auch den entsprechenden Spaltenalias vergeben:

Code: Alles auswählen

SELECT CASE "Spalte1" WHEN 1 THEN "Spalte2" ELSE "Spalte1" END AS "Spalte3" FROM "meineTabelle"
Bus hat geschrieben:2. Was bedeutet "END FROM DUAL" im Code?
END ist Bestandteil der CASE-Fallunterscheidung, FROM sollte bekannt sein, DUAL ist eine x-beliebige Tabelle, ersetz es einfach mit dem entsprechenden Tabellennamen.
Bus hat geschrieben:3. Kann ich den Begriff "SELECT" mehrfach im Code verwenden oder muss der Begriff nicht immer m Anfang stehen?
Jede einzelne Abfrage für sich betrachtet kann nur ein SELECT haben, und dieses muss am Anfang stehen, richtig.
Ein Komplex aus Abfragen (z.B. mit korrelierten Unterabfragen) kann allerdings auch mehrere SELECTS enthalten.
Bus
*
Beiträge: 15
Registriert: Di, 10.01.2012 18:17

Re: OOo Base SQL Wenn dann in Abfragen

Beitrag von Bus »

Moin,
vielen Dank für die Erklärungen, man lernt immer dazu.

Ich habe folgenden SQL Code eingeben:
SELECT "Spalte1", "Spalte2" CASE "Spalte1" WHEN 1 THEN "Spalte2" ELSE "Spalte1" END AS "Spalte3" FROM "Abfrage2" AS "Abfrage2"

Leider bekomme ich SQL Fehlr im Syntax, SQL Status S1000 Fehlr Code 1000

Kann man mir noch einmal helfen.

Vielen Dank
Bus
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: OOo Base SQL Wenn dann in Abfragen

Beitrag von pmoegenb »

Bus hat geschrieben: Ich habe folgenden SQL Code eingeben:
SELECT "Spalte1", "Spalte2" CASE "Spalte1" WHEN 1 THEN "Spalte2" ELSE "Spalte1" END AS "Spalte3" FROM "Abfrage2" AS "Abfrage2"

Leider bekomme ich SQL Fehlr im Syntax, SQL Status S1000 Fehlr Code 1000
Entspricht ja auch nicht dem Code von DPunch.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: OOo Base SQL Wenn dann in Abfragen

Beitrag von DPunch »

Aloha

Zum einen fehlt hier
Bus hat geschrieben:SELECT "Spalte1", "Spalte2" CASE "Spalte1" WHEN 1 THEN "Spalte2" ELSE "Spalte1" END AS "Spalte3" FROM "Abfrage2" AS "Abfrage2"
ein Komma zwischen "Spalte2" und "CASE".
Zum anderen ist es unter Umständen nötig, oben in der Symbolleiste das Häkchen bei "SQL-Kommando direkt ausführen" zu setzen.
Bus
*
Beiträge: 15
Registriert: Di, 10.01.2012 18:17

Re: OOo Base SQL Wenn dann in Abfragen

Beitrag von Bus »

Moin, Danke für die Antwort, leider hat es nicht geklappt.
Kann der Fehler bei der Spalte3 (dort soll ja das Ergebniss stehen) liegen? Ich denke, dass die Spalte3 durch den Code gebildet wird oder wie muss ich die Spalte3 anlegen.
Noch mal vielen Dank

Gruß
Bus
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: OOo Base SQL Wenn dann in Abfragen

Beitrag von DPunch »

Aloha
Bus hat geschrieben:Kann der Fehler bei der Spalte3 (dort soll ja das Ergebniss stehen) liegen?
Nein, der Fehler liegt darin, dass Du die Abfrage gegen eine in Base gespeicherte Abfrage laufen lassen willst - das ist allerdings nicht möglich.
Bus
*
Beiträge: 15
Registriert: Di, 10.01.2012 18:17

Re: OOo Base SQL Wenn dann in Abfragen

Beitrag von Bus »

Moin, Danke das war die Antwort. Ich wußte nicht, dass man in Openoffice sowas nur direkt aus einer Tabelle abfragen kann.
Vielen Dank für die Ausdauer und Mühe
und tschüss
Bus
Antworten