Fragen zu SQL

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Fragen zu SQL
Ich mach nen neuen post auf, denn ich denke es werden auch von anderen noch ein paar Fragen zu SQL kommen.

Nun zu meinen:

  1. Wann sollte man die Verbundoperatoren “left join, inner join, cross join” etc. verwenden und wann diese andere schreibweise “from Personen m, Personen n, where blabla”? Ich finde die letztere etwas einfacher - sollte man sie, wenn man nicht genau weiß, welche Verbundart die richtige ist, zur Not immer wählen?

  2. Was bedeutet “all” ? Was bedeutet “like”?

  3. Was für eine Art von Verbund ist “Inner Join” eigenltich? Finde nichts dazu im Script.

  4. Ist folgendes erlaubt? :

create view  vorfuehrungSpez as .... ;
...
update vorfuehrung vf
set vf.besucherzahl= (select ....)
where  vf.vid in vorfuehrungSpez vfSp     <---- das da! (kanns nicht testen, weil ich meine Dateien zu 3b) auf den UNI-Rechnern nicht mehr finde.)  

Vielen Dank
Aufwiedersehen.


Wenn du im FROM mehrere Tabellen angibst, mit Komma getrennt, dann ist das bereits ein JOIN. Ich glaube ein OUTER JOIN, weiß ich jetzt aber nicht sicher. Wenn du ne andere Verknüpfung haben willst, dann musst du das angeben. In dem Fall, wo wir dieselbe Tabelle 2x verwendet haben, war ein OUTER JOIN nötig, da reicht das Komma auch.

LIKE ist ein Operator, der Zeichenketten vergleicht. ‚abc‘ LIKE ‚ABC‘ oder ‚abcdef‘ LIKE ‚_bc%‘ sind z.B. wahr.

Ein INNER JOIN ist AFAIK die Verknüpfung, die die Zeilen sammelt, wo auf beiden Seiten ein wert steht… Kanns net ausdrücken und bin zu faul ne Tabelle zu malen.

Du meinst:

WHERE spalte IN tabelle

ganz allgemein? Weiß nicht, ich würde eher schreiben

WHERE spalte IN (SELECT anderespalte FROM tabelle)

ein paar antworten:

ich wuerde den verbund nie mit der where-klausel machen - das ist prinzipiell sehr ineffizient, weil er vorher ein kreuzprodukt macht. nach optimierungen sieht das natuerlich anders aus. ich nehme immer die joins mit on-bedingungen bzw. natural joins.

all bedeutet, dass ein attribut z. b. groesser als alle in einer relation angegebenen attribute sein muss. wo steht etwas mit like?

ein inner join hat im ergebnis nur tupel, die partner finden (siehe natural join im skript). im gegensatz dazu stehen die left / right / full outer joins, wo auch null-werte vorkommen.

gruesse,
-steppenwolf

EDIT: @yves: sorry, hatte deinen beitrag noch nicht da, habe wohl zu lange den tab offengelassen :[ - aber 2 antworten sind besser als keine :]…


jap, 2 sind besser :slight_smile:
Dankeschön

Gruß
Marco