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…
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.
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.
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