Ilja: [mysql5] Kartesisches Produkt eingrenzen

Beitrag lesen

yo,

=> 2*5 = 10 beim kartesischen Produkt.

Hatte ich nicht genau das geschrieben ?

nein, du bist davon ausgegangen, dass sich in der einen zwei und in der anderen fünf datensätze aufgrund einer JOIN anweisung befinden. ich würde diesen schluss nicht ziehen, da es sich um einen INNER JOIN und nicht um einen FULL OUTER JOIN handelt. es können sowohl in Tabelle A als auch in Tabelle B datensätze vorhanden sein, die der INNER JOIN nicht greift.

und dabei ist es egal, aus welcher tabelle die spalten kommen.

Das stimmt nicht. Wenn aus B, wovon man ausgehen muss, verschiedene B-Werte for einen  A-Datensatz mitselektiert wuerden, waeren die Rows ggf. DISTINCT auch wenn A.id und A.name doppelt auftraeten.

hast du es schon mal ausprobiert, dass du mit einem DISTINCT und der ausgabe über die gleichen Spalten wie bei einem GROUP BY unterschiedliche ergebnisse rauskommen ? wie gesagt, es spielt keine rolle, aus welcher tabelle die spalten kommen. warum auch, weder DISTINCT noch GROUP BY sind so implementiert, dass es eine rolle spielen könnte.

jede GROUP BY oder DISTINCT Anweisung sind letztlich nur sortierungen.

Stimmt nicht. Zum Suchen brauch ich n, zum Sortieren n*log(n) Operationen. Auch in der Doku steht was zum diesbezueglichen

erstens reden wir nicht über suchen, sondern über sortieren. und zweitens zitiere ich einfach mal von der seite, die du angegeben hast:

"If you use GROUP BY, output rows are sorted according to the GROUP BY columns as if you had an ORDER BY for the same columns"

klingt doch sehr nach sortieren oder nicht ?

Ilja