Kartesisches Produkt

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Kartesisches Produkt

Re: Kartesisches Produkt

von regina » Di, 20.11.2007 20:13

Der Weg über WHERE auf dem kartesischen Produkt dauert viel zu lange. Du benötigst JOIN. Wie das im einzelnen geht findest du in jedem ordentlichen SQL-Lehrbuch. Vorsicht, zur Zeit gibt es bei JOIN noch Probleme mit der Entwurfsansicht, arbeite besser direkt in der SQL-Ansicht.

mfG
Regina

Kartesisches Produkt

von Bubi Meier » Fr, 02.11.2007 21:05

Guten Abend, meine Damen und Herren,

ich meditiere zur Zeit über einen SQL Query, welcher ein paar verknüpfte Tabellen abfragt, also z.B.:

PRODUKTE <- RECHNUNG -> KUNDE

wobei zwischen PRODUKTE und RECHNUNG sogar eine n:m Beziehung vermittels einer weiteren Tabelle, sagen wir mal RECHNUNGSPRODUKTE, bestehen könnte. Also etwa:

PRODUKTE <- RECHNUNGSPRODUKTE -> RECHNUNG -> KUNDE

Eine Liste aller Rechnungen mit den interesanten Informationen könnte nun etwa durch

SELECT * FROM "Kunde" AS "a","Rechnung" as "b", "RECHNUNGSPRODUKTE" as "c", "Produkte" as "d"
WHERE "b"."REFKunde" = "a"."ID", "c"."RefRechnung" = "b"."ID", "c"."RefProdukt" = "d"."ID"

realisiert werden. Das habe ich ausprobiert und klappt auch so.
("*" würde man wahrscheinlich etwas spezifischer formulieren)

Nun frage ich mich allerdings, ob das auch so geschickt ist: Im ersten FROM statement wird je nach Beschaffenheit der Tabellen ein riesiges 'kartesisches Produkt' auf gebaut. Wird dies vom ooBase wirklich so groß aufgebaut, oder denke ich hier falsch? Erkennt ooBase im Vorfeld, dass dies kartesische Produkt durch die WHERE Bedingungen nicht nötig ist?
Wenn das ungeschickt sein sollte, wie gehts anders?

-bm

Nach oben