Ilja: (Oracle) SELECT geht, SELECT DISTINCT nicht. Arrrrgh!

Beitrag lesen

yo,

DISTINCT ist sowieso der denkbar schlechteste Weg, wenn es um solche Abfragen geht. Meist ist der Weg über GROUP BY wesentlich besser, da kontrollierter.

was sollte den daran besser sein ? bei einem DISTINCT muss ich ein schlüßelwort hinschreiben und beziehe mich automatisch auf alle auszugebenen spalten. bei GROUP BY muss ich jede spalte expliziet angeben. für mich hört sich das nach mehr schreibarbeit an und ist somit fehleranfälliger.

An sich wäre bei den von Dir geposteten Statements ja ein JOIN nicht notwendig, allerdings vermute ich, dass Du uns in Bezug auf die eigentlich notwendige Abfrage nicht die ganze Wahrheit sagst;-)

wieso das den nicht, der join sorgt dafür, dass datensätze ohne entsprechenden eintrag in beiden tabellen nicht genommen werden. das ist in aller regel ein unterschied zu den datensätze nur einer tabelle.

Wenn Du z.B. also nur Produkte selektieren willst, die in product_info bestimmte bedingungen erfüllen, so könntest Du eventuell auch über ein Subselect, oder über die obig angesprochene Verwendung von GROUP BY zum gewünschten Ziel kommen.

die bedingung in seinem fall ist eben die bedingung des JOINS, siehe oben. das was du sagst, wäre eine korrelierende unterabfrage und da wiederum würde ich den JOIN vorziehen.

Ilja