Datenbankabfrage: doppelte einträge anzeigen

hallo

ich habe folgendes anliegen:

ich habe eine datenbank mit x spalten
ich möchte spalte a, b, c, f und h angezeigt bekommen
dabei sollen nur die zeilen angezeigt werden die in spalte c doppelte einträge haben
und zu guter letzt soll die sortierung: 1: nach spalte a absteigend und 2. nach spalte c die doppelten einträge gruppiert werden…

kann mir da jemand ne lösung bieten?

Das könnte funktionieren

SELECT * FROM table
WHERE c IN
(
SELECT c FROM (
SELECT c , COUNT( * ) AS count
FROM table
GROUP BY c
HAVING count >1
) as t2
)
ORDER BY a DESC, c ASC;

ist zwar nicht ganz perfekt aber für meine zwecke ausreichend…

ich danke recht herzlich für die schnelle hilfe…

zur aufklärung:

ich betreibe ein browsergame und hasse multiaccounts

zum glück sind diese meist so dumm, das die für ihre multies die gleichen passwörter nutzen.
durch die abfrage habe ich nun die möglicheit, speziell nach usern zu suchen, welche die gleichen pw´s verwenden.
durch die sortierung spar ich mir bei regelmässiger prüfung das erneute vergleichen der bereits geprüften user.
ein doppeltes pw allein beweist natürlich keinen multi, grenzt aber die suche in dieser richtung enorm ein…
weiterführende prüfungen haben eine trefferquote von mehr als 95% ergeben…
demnach ist diese abfrage zur multisuche empfehlenswert.

mfg atze @world-hack.org

Hi,
also jeder kann ja, wie er will. Da ich kein Konstrukt in SQL kenne, dass die Suche nach den doppelten Einträgen formulieren kann, würde ich die Spalten wahrscheinlich komplett reinziehen und die Ergebnismenge der Abfrage dann mit PHP etc. weiter untersuchen.

Micha

Hallo,

sorry, kann dir da grade nicht helfen, bin im Urlaub

TobiLei

Tut mir leid

Das wird mit einer einfachen SQL Abfrage vermutlich schwierig zu bewerkstelligen sein. Du brauchst erstmal ein Subselect um alle ID’s zu bekommen von Einträgen die Doppelt in C enthalten sind:

SELECT id, count(*) AS count FROM GROUP BY c WHERE count > 1

jetzt muss das SQL Statement mit einer abfrage verbunden werden

SELECT a, b, c, f, h FROM WHERE id in (SELECT id, count(*) AS count FROM GROUP BY c WHERE count > 1) ORDER BY a DESC, c ASC