zikan 10 Geschrieben 17. Juni 2012 Melden Teilen Geschrieben 17. Juni 2012 ich mache einen join zwischen einer adressetabelle und einer branchentabelle. zu jeder adresse können mehrere branchen vorkommen. das bekomme ich soweit hin. ich selektiere dabei im where nur bestimmte branchen. soweit auch okay. am ende interessiert mich aber nur noch, welche adresse im ergebnis vorkommt. will in der ausgabe nur jede adresse einmal haben. also ein group auf die adressenid. leider bekomme ich dann die meldung, dass andere spalten wie Kundennr in der Auswahlliste ungültig sind, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten sind. SELECT ADRESSEN.KUNDENNR, ADRESSEN.PLZ, ADRESSEN.ORT, BRANCHEN.BRANCHE1 as Branche1AVW, ADRESSEN.STRASSE, ADRESSEN.HNR, ADRESSEN.ADRESSENID FROM ADRESSEN left join BRANCHEN on ADRESSEN.ADRESSENID=BRANCHEN.ADRESSEN_ID group by ADRESSEN.ADRESSENID order by Ort, Firma Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 17. Juni 2012 Melden Teilen Geschrieben 17. Juni 2012 Moin, bei einem GROUP BY müssen alle Felder im SELECT entweder zum Gruppieren herangezogen oder durch eine Aggregatfunktion angesprochen werden. Ein schmutziger Trick dazu ist, alle Felder, die nicht im GROUP BY stehen, durch MAX(Feldname) anzugeben. Gruß, Nils Zitieren Link zu diesem Kommentar
zikan 10 Geschrieben 17. Juni 2012 Autor Melden Teilen Geschrieben 17. Juni 2012 Wozu muss oder kann man im group dann überhaupt eine Spalte angeben, wenn man alle nutzen muss? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 17. Juni 2012 Melden Teilen Geschrieben 17. Juni 2012 Evtl. hilft ein distingt um die Adressen nur einmal zu bekommen. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 17. Juni 2012 Melden Teilen Geschrieben 17. Juni 2012 Moin, Wozu muss oder kann man im group dann überhaupt eine Spalte angeben, wenn man alle nutzen muss? hinter GROUP BY gibst du an, nach welchen Spalten du gruppieren willst. Bei den nicht gruppierten Spalten musst du dann angeben, welche Werte du denn sehen willst. Du hast ja mehrere Reihen und fasst diese zusammen. Denk dir eine Tabelle mit "Name" (Text), "Sorte" (Text) und "Preis" (Zahl). In fünf Reihen steht vielleicht derselbe Wert für "Sorte", aber unterschiedliche Werte für "Name" und "Preis". Dann musst du beim Gruppieren logischerweise angeben, welchen der Werte für "Name" der Server dir denn geben soll. Die Spalte "Preis" hingegen könntest du als Summe zusammenrechnen. Gruß, Nils Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 17. Juni 2012 Melden Teilen Geschrieben 17. Juni 2012 Moin, Evtl. hilft ein distinct um die Adressen nur einmal zu bekommen. nein, hier ist das Gruppieren schon richtig. Man muss nur korrekt damit umgehen. Gruß, Nils Zitieren Link zu diesem Kommentar
zikan 10 Geschrieben 17. Juni 2012 Autor Melden Teilen Geschrieben 17. Juni 2012 ja, distinct wäre falsch, weil, wenn ich das richtig verstehe, würde mir dies vorher schon adressen zusammenfassen und im nachhinein würde meine where-bedingung nicht korrekt angewendet werden, da einfach mal branchenwerte fehlen. mit dem max ist also so, dass der server bei der zusammenfassung sonst schlichtweg nicht weiß, welchem wert er bei der zusammenfassung prioriät geben soll. deshalb also max. gut, werd ich mal probieren Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 17. Juni 2012 Melden Teilen Geschrieben 17. Juni 2012 Moin, und wenn du künftig dann noch Groß- und Kleinschreibung verwendest und es den Helfenden so erleichtest, deine Fragen zu lesen - perfekt. ;) Gruß, Nils Zitieren Link zu diesem Kommentar
zikan 10 Geschrieben 17. Juni 2012 Autor Melden Teilen Geschrieben 17. Juni 2012 Es hat sich doch mittlerweile eigentlich eingebürgert, dass in Foren vieles nur noch kleingeschrieben wird. Ich nutze doch immerhin noch Satzzeichen. Ganz ehrlich, ich finde Kleinschreibung erschwert in keiner Art und Weise die Lesbarkeit. Aber gut, hab damit kein Problem. Muss nur immer Umdenken. Übrigens, die ersten zwei Male als ich meinen Beitrag schrieb, war er noch in Groß- und Kleinschreibung. Beim dritten Mal, als ich zweimal zuvor zwischen Browser und Managementstudio gewechselt war und dann im Browser zum Löschen Backspace nutzte, war ich ein wenig doll angeko*** den Beitrag nun noch ein drittes mal schreiben zu müssen. Wers nicht versteht: Backspace= History Back.. sprich, er sprang auf die vorhergehende Seite und mein Text war im Datennirvana verschwunden. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.