michel: SQL Join

Hi,

habe 2 Tabellen (Auftrag, KD_ADR).

Im Auftrag steht die Auftrags-ID (ATID), KundenID (KDID), Außendienstler (ADID), Monatsumsatz (MONATUMSATZ).
In der KD_ADR stehen die KundenID (KDID), Name(NAME1) und PLZ (PLZ) usw..

Jetzt will ich den Monatsumsatz pro Außendienstler mit Kundennamen. Ohne Kundenname wäre es ja:

  
select AU.ADID AS Außendienst, SUM(AU.MONATUMSATZ) AS "MONATSUMSATZ"  
FROM AUFTRAG AU  
group by AU.ADID;  

Und mit Kundennamen dachte ich:

  
SELECT AU.ADID, SUM(AU.MONATUMSATZ), KD.NAME1  
FROM AUFTRAG AU, KD_ADR KD  
WHERE AU.KDID = KD.KDID  
GROUP BY AU.ADID  

FEHLER: Not a group by expression?

Wo liegt mein Fehler?

  1. Yerf!

    FEHLER: Not a group by expression?

    Wo liegt mein Fehler?

    Du selektierst ein Feld, über das nicht gruppiert wird.

    Wie sehen die Daten aus, ist innerhalb einer Gruppe mit der selben AU.ADID der KD.NAME1 immer identisch? Wenn ja: nimm KD.NAME1 noch mit in den GROUP BY auf. Wenn nein: wie soll das Ergebnis aussehen, ein beliebiger, alle, oder anders?

    Gruß,

    Harlequin

    --
    RIP --- XHTML 2
    nur die Besten sterben jung
    1. Wie sehen die Daten aus, ist innerhalb einer Gruppe mit der selben AU.ADID der KD.NAME1 immer identisch? Wenn ja: nimm KD.NAME1 noch mit in den GROUP BY auf. Wenn nein: wie soll das Ergebnis aussehen, ein beliebiger, alle, oder anders?

      OK, hab es jetzt so gelöst:

        
      SELECT KD.NAME1, AU.ADID, AU.MONATUMSATZ, KD.KDID AS "KundenNR", AU.ATID AS "AuftragsNR", AU.ATDATUM  
      FROM KD_ADR KD, AUFTRAG AU  
      WHERE KD.KDID = AU.KDID AND (ATDATUM BETWEEN '01.01.2011' AND '12.03.2011')  
      
      

      Mit entsprechenden Datum.

      Problem nur erstmal: Hab einen Kunden XY mit 2 Aufträgen, die zeigt er auch an. Nur zeigt er insgesamt 6 Zeilen an, alle anderen bei NAME1 mit (null) gefüllt. Was stimmt nicht? Iwas mit der where klausel?

  2. Hallo,

    habe 2 Tabellen (Auftrag, KD_ADR).

    und welches Datenbankmanagementsystem (Access, DB2, MS SQL-Server, MySQL, Oracle, PostgreSQL, ...) in welcher Version?

    Im Auftrag steht die Auftrags-ID (ATID), KundenID (KDID), Außendienstler (ADID), Monatsumsatz (MONATUMSATZ).
    In der KD_ADR stehen die KundenID (KDID), Name(NAME1) und PLZ (PLZ) usw..

    Jetzt will ich den Monatsumsatz pro Außendienstler mit Kundennamen.

    was verstehst Du darunter?
    Eine Liste von Kunden, mit denen die Außendienstler ihren Monatsumsatz gemacht haben?
    Etwas anderes?

    Ein paar Beispieldatensätze und das gewünschte Ergebnis wären sehr hilfreich.
    So verstehe ich nicht, was Du haben möchtest.

    Freundliche Grüße

    Vinzenz