Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Ein Skalar in SQL


Kossy - So 16.09.12 10:05
Titel: Ein Skalar in SQL
Hallo !

Ich habe mal eine Frage zu dem Thema Skalar in SQL. Ist ein Skalar in SQL (jetzt nicht in der Mathematik) ausschließlich immer nur eine Spalte mit einer Zeile, oder könnte ein Skalar auch durchaus eine Spalte mit mehreren Zeilen sein?

Mit Zeilen meine ich so etwas quasi wie ein Tupel, der aber eben nur eine Spalte enthält.

Diese Frage interessiert mich vor allem in Bezug auf skalare korrelierte Unterabfragen, die ich als Ausdruck innerhalb der Select Klausel formulieren könnte.

Danke für die Hilfe !

Viele Grüße
Kossy


Ralf Jansen - So 16.09.12 12:21

Zitat:
Diese Frage interessiert mich vor allem in Bezug auf skalare korrelierte Unterabfragen, die ich als Ausdruck innerhalb der Select Klausel formulieren könnte.


Ein Skalar ist immer genau ein Wert. Es hindert dich aber keiner daran durch irgendein Verfahren aus mehreren Werten einen zu machen. Dieser Wert wird ja nur während der Korrelierung benötigt und kann absolut künstlich und Aussagenfrei sein. Die Methode muss halt nur eindeutige vergleichbare Werte liefern. Die Wahrscheinlichkeit sich dabei was langsames zu basteln ist aber leider auch extrem hoch ;) Das ganze sollte also immer nur eine Notlösung sein.


Kossy - Mo 17.09.12 19:30

Ich habe hier nochmal das SQL Beispiel und das Result dazu hineingestellt, worauf sich meine Frage eigentlich bezog


Kossy - Mo 17.09.12 19:30

hier nochmal das result


bummi - Di 18.09.12 07:14

warum nicht so?

Quelltext
1:
2:
3:
4:
5:
6:
7:
Select p.Product,b.name as branch,Concat(e.fname,' ',e.lname) as Name,Sum(a.avail_balance) as tot_deposits
from account a
Join product p on p.product_cd=a.product_cd and p.product_type_cd='Account' 
Left Join branch b on b.branch_id=a.open_branch_id
Left Join enployee e on e.emp_id=a.open_emp_id
group by p.Product,b.name as branch,Concat(e.fname,' ',e.lname)
order by 1,2

verwirrend finde ich zudem die ersten 3 Zeilen Deines Results


Kossy - Di 18.09.12 07:47

"verwirrend finde ich zudem die ersten 3 Zeilen Deines Results"


Und genau hier verstehe ich nicht, wie diese zustandekommen bzw. das ganze Ergebnis eigentlich und warum solche Subselects auch innerhalb der SELECT Klausel auftauchen können.

Viele Grüße
Koss


Ralf Jansen - Di 18.09.12 09:37

Zitat:
Und genau hier verstehe ich nicht, wie diese zustandekommen bzw.


Ergebnis und SQL gehören nicht zusammen ;) Ich vermute mal das Ergebnis ist ohne das äußere SQL mit der WHERE Klausel entstanden.

Zitat:
warum solche Subselects auch innerhalb der SELECT Klausel auftauchen können.


In deinem Beispiel sicher unnötig wie user profile iconbummi zeigt. Wenn er sein sql noch eingerückt hätte wäre auch erkennbar das das so eigentlich lesbarer ist ;)
Solche Subselects sind auch eher selten. Wenn ich das mal benutzt habe dann eher aus Performancegesichtspunkten. Nicht das die Methode des Subselects grundsätzlich schneller wäre als ein Outer Join aber wenn man merkt das der vorzuziehende Outer Join langsam ist kann man mal per Try&Error schauen ob sich so ein Subselect besser verhält.