Frage zu SQL Syntax

DennisXX

Bekanntes Mitglied
Hi Folks !

Auf Seite 219 des Buches "Einführung in SQL" vom O´Reilly Verlag habe ich ein SQL Beispiel gefunden, dass für mich nicht ganz plausibel ist. Ich habe dieses Beispiel mal in den Anhang dieses Posts gestellt.

Dort befinden sich in der SELECT Klausel selbst komplexere SQL Befehle. Ich versteht nicht ganz, weshalb das zulässig sein kann, denn eigentlich sind solche komplexere Befehle doch nur in der FROM-, WHERE- oder HAVING-Klausel zulässig oder?

In der SELECT Klausel selbst sollen doch nur Felder auftauchen, die eine gewisse Ergebnissmenge zurückliefern oder (entweder durch umfangreichere FROM Klausel WHERE Klausel oder GROUP BY in Kombination mit einer HAVING Klausel)?

Greetz
Dennis
 

Anhänge

  • sql_question.jpg
    sql_question.jpg
    50,5 KB · Aufrufe: 51

DennisXX

Bekanntes Mitglied
Also das hilft mir überhaupt nicht weiter.

Es geht auch eher um die komplexeren Befehle in der SELECT Klausel selbst und nicht AB der FROM oder WHERE Klausel !!!
 
S

SlaterB

Gast
was soll man sagen, es geht halt mehr oder weniger, vielleicht auch nicht in allen Datenbanken,

habe jetzt eben paar SQL-Tutorials angeschaut,
ist nicht wirklich direkt genannt oder weiter hinten gut zu finden, speziell nicht in
MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.7 SELECT

nach CASE gesucht dann führt zu
SQL Server Update: "Using CASE Expressions"
A More Complicated Example

Using searched CASE expressions and nested subqueries in SELECT statements very complex processing can be accomplished with a single SQL statement.
[..]
subqueries ist auch ein guter Suchbegriff,

in einem 500 Seiten-Buch zu SQL wird wohl alles drinstehen,
ansonsten ausprobieren und eben akzeptieren was einem so begegnet
 
Zuletzt bearbeitet von einem Moderator:

turtle

Top Contributor
select cust_id, fed_id, cust_type_cd from customer c sollte verständlich sein.

Nun möchte ich noch wissen, ob ein Kunde überhaupt Giro/Sparkonten hat.

Daher ergänze ich das SQL um zwei Spalten, die zur Laufzeit ermitteln, ob überhapt Einträge des betreffenden Typs vorliegen und gebe ein Zeichen für die entsprechende Spalte zurück.

Das Beispiel verbindet also dynamische Spalten über das case-Konstrukt mit einer select_Anweisung um die Bedingung zu bestimmen, welche Anzeige in der Spalte stehen soll.

Nun klarer?
 
S

SlaterB

Gast
@turtle
der konkrete Inhalt dieser Query war weniger die Frage sondern doch allein die mögliche neue Syntax


> Nun klarer?
du solltest mit deiner Formulierung ein wenig aufpassen wenn dein erster Link doch ziemlich unnötig unklar war
 

DennisXX

Bekanntes Mitglied
in einem 500 Seiten-Buch zu SQL wird wohl alles drinstehen,
ansonsten ausprobieren und eben akzeptieren was einem so begegnet

Naja, man muss es auch verstehen, warum so etwas akzeptiert wird. Nur dann kann es ja auch in den entsprechenden Situationen anwenden bzw. auch richtig anwenden.

Daru geht es ja und deshalb auch meine Frage hier in dem entsprechenden Fachforum.

Greetz
Dennis
 
M

maki

Gast
Naja, man muss es auch verstehen, warum so etwas akzeptiert wird. Nur dann kann es ja auch in den entsprechenden Situationen anwenden bzw. auch richtig anwenden.

Daru geht es ja und deshalb auch meine Frage hier in dem entsprechenden Fachforum.
Nun ja, wenn die Fragen mit einer Googlesuche zu der Doku beantwortet werden kann, dann war die Frage es nicht wirklich Wert in einem Forum gestellt zu werden.

Mal ehrlich, nach "sql case" oder gar "sql case syntax" zu googeln darf ja man wohl noch erwarten, oder sollen wir dir das hier wirklich abnehmen?
 
S

SlaterB

Gast
ob eine Subquery im SELECT erlaubt und vielleicht gut oder ungünstig ist, ist schon bisschen interessanter (habe ich nicht unbedingt beantwortet),
die meisten CASE-Suchergebnisse haben auch nur einfache Werte-Paare, nicht gleichzeitig auch noch Subqueries,

also gibt schlimmere Fragen ;)
 

Evil-Devil

Top Contributor
Du kannst bei MySQL nahezu beliebig viele Subqueries schreiben

Dabei ist es fast egal wo sich der Subquerie befindet. Der kann direkt im Select stehen, innerhalb des Case Blockes der wiederum im Select steht. Es ginge auch den in die FROM Bedingung zu intergrieren oder ins Where. Wichtig ist das der Subquery als selbst funktioniert und keine Funktionalität nutzt die dort nicht erlaubt ist. Zb. ging es meine ich bis vor Mysql5 nicht ein Limit im Subquery zu nutzen.

Um deine Frage noch zu beantworten: Das ist in sofern zulässig, weil Werte nicht zwingend aus der FROM kommen müssen. Select kann sowohl mit statischen als auch dynamischen Werten arbeiten.

Zb. funktioniert auch folgendes:
select date_format(now(), '%m.%d.%Y'), 'Aktuelles Datum';

Ist zwar relativ sinnfrei dieses Select, aber wie man sieht hat es keine FROM Anweisung und wird trotzdem ausgeführt. Ähnlich ist es mit dem CASE. Das liefert entsprechend den Wert zurück und das SELECT ergänzt dafür dann eine zusätzliche Spalte in der Ausgabe.
 

DennisXX

Bekanntes Mitglied
Mal ehrlich, nach "sql case" oder gar "sql case syntax" zu googeln darf ja man wohl noch erwarten, oder sollen wir dir das hier wirklich abnehmen?

Also ich finde Deine Art von Antwort schon ziemlich daneben und großkotzig. Du bist hier nicht der Fachmann für sämtliche Einschätzungen und Expertisen ok?

Was ein CASE in SQL ist und wie seine Syntax aussieht, ist mir bereits geläufig, allerdings ist mir nicht verständlich, und genau das war der eigentliche Tenor dieser Frage, WARUM es direkt aus Ausdruck in einem Feld eines SELECT auftauchen kann, welcher eigentlich nur eine Ergebnismenge zurückliefert, die bereit durch andere Codesegmente bestimmt und zurückgeliefert werden sollte.

Ich hoffe mein Anliegen ist nun verständlich, als zuvor.

Greetz
Dennis
 
Zuletzt bearbeitet:

turtle

Top Contributor
DU wolltest von uns eine Antwort auf eine Frage haben, oder?

Nun haben wir in mehreren Beiträgen versucht, nahe zu bringen, worin der "Clou" des Select-Statements liegt. Aber stattdessen mal sich damit zu beschäftigen, beleidigst Du nur Andere. Das finde ich schon ein starkes Stück:mad:
 

DennisXX

Bekanntes Mitglied
Aber stattdessen mal sich damit zu beschäftigen, beleidigst Du nur Andere. Das finde ich schon ein starkes Stück:mad:

Ich denke das Maki hier derjenige ist, der hier ausfällig geworden ist und ich mich in Bezug auf sein mir entgegengebrachtes Niveau noch recht eloquent und morderat geäußert habe.

Nun ist aber gut diesbezüglich ok?
 
M

maki

Gast
Also ich finde Deine Art von Antwort schon ziemlich daneben und großkotzig. Du bist hier nicht der Fachmann für sämtliche Einschätzungen und Expertisen ok?
Dir steht es frei meine Antworten ggf. zu ignorieren, aber der Hinweis dass du auch Google nutzen könntest ist ja nicht allzuweit hergeholt.

Ich denke das Maki hier derjenige ist, der hier ausfällig geworden ist und ich mich in Bezug auf sein mir entgegengebrachtes Niveau noch recht eloquent und morderat geäußert habe.
Wirklich?
Wo bin ich "ausfällig" (?) geworden?
Und wo willst du mit Eloquenz und Niveau geantwortet haben? *g*
Bist doch nur persönlich geworden, für mich klingt das eher nach einem 4 Jährigen in der Trotzphase.
 

Evil-Devil

Top Contributor
WARUM es direkt aus Ausdruck in einem Feld eines SELECT auftauchen kann, welcher eigentlich nur eine Ergebnismenge zurückliefert, die bereit durch andere Codesegmente bestimmt und zurückgeliefert werden sollte.
Weil es möglich ist die Ergebnismenge zu ergänzen. Jedes CASE, jedes IF, jeder Subquery der eine Menge zurückliefert erweitert die eigentliche Menge um n Spalten.
 

DennisXX

Bekanntes Mitglied
Weil es möglich ist die Ergebnismenge zu ergänzen. Jedes CASE, jedes IF, jeder Subquery der eine Menge zurückliefert erweitert die eigentliche Menge um n Spalten.

Perfekt, vielen Dank und genau darauf wollte ich hinaus !

@maki
Bitte ein Beispiel an dieser seriösen und prägnanten Ausdrucksweise nehmen und bei der nächsten Forendiskussion entsprechend antizipieren ok?

Greetz
Dennis
 
M

maki

Gast
@maki
Bitte ein Beispiel an dieser seriösen und prägnanten Ausdrucksweise nehmen und bei der nächsten Forendiskussion entsprechend antizipieren ok?
DenisXX, du solltest dir deine persönlichen Anfeindungen jetzt sparen, genauso wie deine geheuchelten "Danke", sonst gibt es wirklich Ärger und du wirst hier nicht mehr partizipieren, alles klar?
 

DennisXX

Bekanntes Mitglied
@maki

Stimmt ich habe auch gerade gesehen, dass Du ein Moderator hier im Forum bist. Dann bin ich ab jetzt mal lieber devot...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Frage zu Bundesliga-DB Datenbankprogrammierung 1
pkm Frage zu Encodingproblem bei einer Datenbankanbindung Datenbankprogrammierung 1
B Frage bei einer SQL Query Datenbankprogrammierung 3
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
B SQLite Frage zu SQLite Datenbankverbindung Datenbankprogrammierung 7
M Frage zu JSON Datenbankprogrammierung 16
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
P Frage zu Connection.close() Datenbankprogrammierung 4
R MySQL Frage zum Anlegen von Artikeln inkl. Verbindungen Datenbankprogrammierung 0
M Grundlegende Klassen-Design Frage Datenbankprogrammierung 0
P MySQL Frage zur Einbindung in ein Java Projekt Datenbankprogrammierung 2
I Frage zu Datenmodellierung Datenbankprogrammierung 3
J Normalisierung - Allgemeine Frage zur 3. Normalform (Eventuelle Abhängigkeit) Datenbankprogrammierung 4
F Normalisierung Datenbank Frage Datenbankprogrammierung 5
J Frage zu ResultSet Datenbankprogrammierung 3
W Frage zur Datenbankwahl bei Umstieg auf Java Datenbankprogrammierung 7
D Frage zu DISTINCT in SQL Datenbankprogrammierung 5
K Frage zur Datenprotokollierung bei DML Anweisungen Datenbankprogrammierung 3
K Frage zu SQL Datenbankprogrammierung 2
L PostgreSQL Hibernate-Frage Datenbankprogrammierung 2
K Frage zu Datenbankmodellierung Datenbankprogrammierung 15
D Generelle Frage zum Umgang mit Datensätzen Datenbankprogrammierung 5
L Frage zu UpdateQuery Datenbankprogrammierung 12
8 MySQL Kurze Frage zur Sicherheit Datenbankprogrammierung 9
D Frage zu INSERTS über mehrere Datenbanktabellen Datenbankprogrammierung 3
D Frage zu Ausführungsmöglichkeiten von SQL Befehlen Datenbankprogrammierung 13
D Frage zu potenziellen Leerzeichen in einer Datenbank Datenbankprogrammierung 5
X Connection schließen oder speichern? Performance Frage Datenbankprogrammierung 7
J mal wieder eine Frage zu parallelen Transaktionen.. Datenbankprogrammierung 2
V Frage zu Hibernate-Mapping Datenbankprogrammierung 11
N Allg. Frage zur Datenbankverbindung Datenbankprogrammierung 2
E einfache Frage bei DB-Zugriff Datenbankprogrammierung 11
S MySQL Frage zu LeftJoin Abfrage Datenbankprogrammierung 2
O eigentlich simple SQL Frage Datenbankprogrammierung 2
M Frage zu folgender Query in EJB-QL Datenbankprogrammierung 4
H JBoss: Frage zur Datasource in der ...-ds.xml Datenbankprogrammierung 4
F Frage zu Prepared Statement Datenbankprogrammierung 2
R hibernate Frage zu configFile-Pfad und Groß/Kleinschreibung von Postgres-Tabellen Datenbankprogrammierung 8
U Frage zum Erfassen von hinzufügten und entfernten Objekten Datenbankprogrammierung 9
M prinzipielle Frage zu Datenbanken und jars ... Datenbankprogrammierung 2
S Hibernate - spezielle Frage, n zu n Beziehung Datenbankprogrammierung 11
R Frage zu PreparedStatement/ResultSet Datenbankprogrammierung 16
J Frage zu Synchronisation bei parallelem Zugriff, speziell mit JPA Datenbankprogrammierung 2
F EclipseLink persistence.xml Frage Datenbankprogrammierung 11
N Frage zur Sicherheit von Konfigurationsdatei Datenbankprogrammierung 4
H performance frage Datenbankprogrammierung 9
G Frage zum Insert-Statement Datenbankprogrammierung 2
Antoras Design-Frage: Datenzuordnung zu verschiedenen Accounts Datenbankprogrammierung 2
T HSQL: verständnis Frage Datenbankprogrammierung 2
T Java JPA Frage bzgl. DISTINCT Datenbankprogrammierung 2
G Frage zu connection? Datenbankprogrammierung 9
A Frage zu SQL-Abfrage Datenbankprogrammierung 2
G Frage zu SQL "WHERE IN (1, 2, 3. , N)" Datenbankprogrammierung 8
G Allgemeine Frage zu Datenbanklimits Datenbankprogrammierung 27
G allgemeine JDBC-Connection Frage Datenbankprogrammierung 2
G Frage zu Hibernate und M:N Beziehung Datenbankprogrammierung 9
K HQL Frage Datenbankprogrammierung 10
D kurze Frage zu einem Query Datenbankprogrammierung 6
B Hibernate mit MySql - Verständniss Frage Datenbankprogrammierung 8
N Kleine Frage zu Connection Pooling mit DataSource Datenbankprogrammierung 2
T Update-Frage Datenbankprogrammierung 11
E SQL-Frage (Löschen aller Datensätze) Datenbankprogrammierung 9
P Frage zu Performancetest einer Datenbank Datenbankprogrammierung 3
W Frage zum Umgang mit DB-Daten Datenbankprogrammierung 2
E Nochmal eine Datenbankabfrage Frage :-o (JOIN oder so) Datenbankprogrammierung 4
P frage zu "" bei INSERT STATEMENTS Datenbankprogrammierung 2
K frage zum ausführen eines INSERT statements Datenbankprogrammierung 16
L frage zu mySQL Datenbankprogrammierung 4
C Mal ne Frage an die Experten Datenbankprogrammierung 4
G Frage zum Datenbankdesign Datenbankprogrammierung 5
J DB Verbindung Design Frage Datenbankprogrammierung 5
M Datenbankanbindung in Java : Newbie-Frage Datenbankprogrammierung 2
U Grundsätzliche Frage Datenbankprogrammierung 4
S Frage zu INSERT Datenbankprogrammierung 2
X Wieder mal ne Frage ... Datenbankprogrammierung 15
M MySQL Error in SQL syntax Datenbankprogrammierung 10
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
B Inner Join ohne SQL Syntax Datenbankprogrammierung 2
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
F Java SQL Syntax Error erst nach mehrmaligen Aufrufen Datenbankprogrammierung 3
M Problem mit HQL Syntax Datenbankprogrammierung 5
Cypha JPA Syntax error - falscher Aufbau? Datenbankprogrammierung 3
Kenan89 Fremdschlüssel, korrekte Syntax? Datenbankprogrammierung 2
P [Hibernate] SQL Syntax-Error Datenbankprogrammierung 2
trash ResultSet Syntax Fehler Datenbankprogrammierung 11
E MySQL 2 Fragen zur Syntax von SQL-Abfragen Datenbankprogrammierung 8
L You have an error in your sql syntax Datenbankprogrammierung 4
R MySQL Syntax für suche nach Textteil Datenbankprogrammierung 8
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39

Ähnliche Java Themen

Neue Themen


Oben