Vinzenz Mai: Tabellenfelder vergleichen

Beitrag lesen

Hallo Daniel,

Beispieldaten:

ID  Name    Vorname  Ort            Telefon  eMail
------------------------------------------------------------
1   Meier   Daniel   Homburg        1234     md@example.org
2   Werner  Thorben  München        4321     wt@example.org
3   Kind    Thomas   Dortmund       3242     kt@example.org
4   Winter  Daniel   Bremen         7823     wd@example.org
5   Winter  Marina   Wilhelmshaven  3465     wm@example.org
6   Albert  Tim      Leipzig        5231     at@example.org
7   Albert  Tim      Leipzig        5231     at2@example.org

Anmerkung: Für Beispieldaten sind die Domains

example.org, example.com, example.net

vorgesehen. Es wäre eine gute Idee, in Zukunft bei Beispieldaten
diese zu verwenden.

SELECT

Name,
    COUNT()
FROM Nutzer
GROUP BY Name
HAVING COUNT(
) > 1


> >   
> > sollte zwei Datensätze zurückliefern:  
> >   
> > Name    COUNT(\*)  
> > ----------------  
> > Winter  2  
> > Albert  2  
  

> Ja, ich will gerne weitere bzw. momentan alle Daten von dem Nutzer haben, deren Name/Vorname gleich ist.  
  
Du möchtest also die Details zu diesen Nutzern haben. Das geht mit einer [korrelierten Unterabfrage](http://dev.mysql.com/doc/refman/4.1/en/correlated-subqueries.html). MySQL unterstützt Unterabfragen ab Version 4.1.  
  
~~~sql
SELECT  
    ID,                   -- Liste der gewünschten Details  
    Name,  
    Vorname,  
    Ort,  
    Telefon,  
    eMail  
FROM Nutzer  
WHERE Name IN (           -- von den Datensätzen, bei denen der Name  
    SELECT                -- in der Liste  
        Name              -- der Namen  
    FROM Nutzer           -- der Nutzer vorkommt,  
    GROUP BY Name  
    HAVING COUNT(*) > 1   -- die häufiger als einmal vorkommen  
)

liefert mit den Beispieldaten als Ergebnis

ID  Name    Vorname  Ort            Telefon  eMail
------------------------------------------------------------
4   Winter  Daniel   Bremen         7823     wd@example.org
5   Winter  Marina   Wilhelmshaven  3465     wm@example.org
6   Albert  Tim      Leipzig        5231     at@example.org
7   Albert  Tim      Leipzig        5231     at2@example.org

wobei die Datensätze in einer zufälligen Reihenfolge auftreten können, da keine Sortierung vorgegeben ist.
Getestet mit MySQL 4.1.18 und MS SQL-Server 2005.

Grundsätzlich empfehle ich Dir, Dich in SQL einzuarbeiten, damit Du auch verstehst, was Du machst. Die Lektüre der Handbücher des gerade verwendeten Datenbankmanagementsystems ist dabei durchaus lehr- und hilfreich.

Freundliche Grüße

Vinzenz