Autor Beitrag
Kossy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: So 16.09.12 10:05 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: Mo 17.09.12 19:30 
Ich habe hier nochmal das SQL Beispiel und das Result dazu hineingestellt, worauf sich meine Frage eigentlich bezog
Einloggen, um Attachments anzusehen!
Kossy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: Mo 17.09.12 19:30 
hier nochmal das result
Einloggen, um Attachments anzusehen!
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 18.09.12 07:14 
warum nicht so?
ausblenden 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

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Kossy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.