# MySQL - Doppelte Einträge von Spalte abhängig



## Maniac (18. März 2011)

Hi,

Ich hab auch mal wieder ein Problem, wo ich jetzt nicht auf Lösung komme.
Ich habe eine Tabelle in der ich Statistiken von Usern speichere.
Es kommt ab und an mal vor das sich hier doppelte Einträge einschleichen.

Nun möchte ich mit einer Abfrage herausfinden wo die doppelten Einträge sind.

Struktur der Tabelle im Anhang.

Gesucht werden sollen die doppelten "pid" pro "spieltag"


----------



## ByeBye 154279 (18. März 2011)

HEy,

möchtest du die Doppelten als Resultat sehen oder die doppelten "ausblenden"?

Wenn du die doppelten "Ausblenden" möchtest,
dann genügt es, wenn du am Ende deiner Query die GROUP BY Funktion einfügst.

Wenn du die doppelten herausfinden möchtest, sollte folgender/ähnlicher Befehl funktionieren:

```
SELECT spieltag, COUNT(*) as anzahl FROM tabelle WHERE anzahl > 1 GROUP BY spieltag
```

Damit erhälst du die Spieltage, an denen mehr als ein Eintrag vorhanden ist.

mfg
bo


----------



## Yaslaw (18. März 2011)

Gruppieren -> Zählen -> Ausfiltern -> zurückverlinken


```
SELECT
	mytable.*
FROM
	mytable,
	(
		SELECT
			pid,
			spieltag
		FROM
			mytable
		GROUP BY
			pid,
			spieltag
		HAVING
			COUNT(*) > 1
	) AS doubles
WHERE
	mytable.pid = doubles.pid
	AND mytable.spieltag = doubles.spieltag
ORDER BY
	mytable.pid,
	mytable.spieltag
```


----------



## Yaslaw (18. März 2011)

bergonline hat gesagt.:


> Wenn du die doppelten "Ausblenden" möchtest,
> dann genügt es, wenn du am Ende deiner Query die GROUP BY Funktion einfügst.
> 
> Wenn du die doppelten herausfinden möchtest, sollte folgender/ähnlicher Befehl funktionieren:
> ...



Die Bedinung muss in den HAVING-Teil. Das WHERE wird vor dem GROUP BY ausgeührt und da hast du die Anzahl noch nicht. Zudem muss die pid mit rein, da du sonst nur Zählst wieviele Einträge es pro Spieltag hat.

```
SELECT
	pid,
	spieltag
FROM
	mytable
GROUP BY
	pid,
	spieltag
HAVING
	COUNT(*) > 1
```


----------



## ByeBye 154279 (18. März 2011)

Danke yaslaw.
Vergesse öfters das HAVING bei GROUP BY.

mfg
bo


----------



## Maniac (18. März 2011)

Danke yaslaw,

genau das was ich gebraucht habe.

Wie machst du das nur immer?


----------



## Yaslaw (18. März 2011)

Maniac_81 hat gesagt.:


> Wie machst du das nur immer?


Erfahrung, Übung etc.


----------



## Maniac (18. März 2011)

yaslaw hat gesagt.:


> Erfahrung, Übung etc.


 
Naja, ich bin ja auch nicht gerade erst seit ein paar Wochen am Programmieren.
Übung hab ich ja auch, aber auf solche Sachen von der Entwicklung wie du hier den Leuten vor den Latz knallst ist schon erstaunlich!


----------

