Meise2000: SQL-Anfrage

Hallo Leute,

ich habe eine ganz simple Datenbanktabelle für e-Mails mit den Spalten:

ID, toRef, fromRef, subject, text ...

Dabei ist ID der Primärschlüssel und 'toRef' und 'fromRef' Fremdschlüssel für User, die logischerweise in einer anderen Tabelle verwaltet werden.

Ich möchte nun mit einer Anfrage wissen, wieviel e-Mails jeder User von VERSCHIEDENEN (hier liegt mein Problem) Usern bekommen hat.

Der bestand

1 , 1 , 2 , 'Hallo' 'bla bla...'
2 , 1 , 3 , 'Moin', 'bla...'
3 , 3 , 1 , 'Re: Moin', 'bla...'
4 , 1 , 3 , 'Re: Moin', 'bla...'

soll mir also

1 , 2
3 , 1

ausspucken (und nicht im ersten Datensatz (1,3)...)
Geht das mit einer Abfrage?

Danke,
Meise.

  1. Hi,

    so könnte es gehen. Muss aber zugeben, das war grad rein aus dem kopf und eventuell syntaktisch nicht richtig.

    Select count (*) from mails where Toref = 1 and fromRef = (select distinct fromref from mails where toref = 1)

    Der bestand

    1 , 1 , 2 , 'Hallo' 'bla bla...'
    2 , 1 , 3 , 'Moin', 'bla...'
    3 , 3 , 1 , 'Re: Moin', 'bla...'
    4 , 1 , 3 , 'Re: Moin', 'bla...'

    soll mir also

    Gruss Matze

  2. Hallo Meise,

    "select toRef, count(*) from <table> group by toRef" sollte dir helfen.

    CYa
    GONZO

  3. Hello,

    ID, toRef, fromRef, subject, text ...

    select toRef, fromRef, count(ID) as anzahl from TABELLE group by fromRef,toRef;

    So würden alle to-mails der Reihe nach aufgezählt mit Untergruppierung von wem die Mails gekommen sind. Mehrere Mails von einer Adresse an eine Adresse werden dabei zusammengefasst (gezählt).

    Nun müsste man das Ganze nochmal gruppieren und zählen über die toRef.

    Grüße

    Tom

  4. Hallo Meise,

    versuch mal das:

    SELECT a1.toref,a1.fromref
     FROM a AS a1
      INNER JOIN a AS a2
       ON a1.toref = a2.fromref
     GROUP by a1.toref

    Grüße Oesi