MySQL: Prüfen auf Doppeleinträge
hattrix
- datenbank
Hallo,
folgendes:
Tabellenname: Punkte
id
id_v
tipp1
tipp1_plus
tipp2
tipp2_plus
gesamt_pkt
Sind alles Integers.
tipp1 und tipp2 sind die getippten Zahlen. tipp1_plus und tipp2_plus sind die erhaltenen Punkte.
Was soll passieren?
User haben bestimmte Tipps abgegeben. In meinem fall von 1 bis 30. Haben 2 User die gleiche Zahl bei Tipp1 und/oder bei Tipp2 abgegeben, dann erhalten sie 0 Punkte, statt die von Ihnen getippten Zahl.
Beispiel:
Otto 22 23
Bernd 28 23
Gunter 20 22
Daniel 19 30
Tim 22 8
Das heißt, dass Bernd die 23 Punkte nicht bekommt, weil Otto auch die 23 getippt hat.
Um genau diese Prüfung der Zahlen geht's jetzt. Ich finde kein Ansatz, dies über PHP/MySQL berechnen zu lassen.
Moin,
Das heißt, dass Bernd die 23 Punkte nicht bekommt, weil Otto auch die 23 getippt hat.
Hmm, genau damit habe ich ein Verständnisproblem, also zu diesem Spiel.
Wie sicherst Du diese Beziehung so dass es nicht genau umgekehrt wirken kann, also
Das heißt, dass Otto die 23 Punkte nicht bekommt, weil Bernd auch die 23 getippt hat.
Ist das Zeitabhängig oder so?
--roro
Keine Zeitabhängigkeit.
Gibt es doppelte Tipps, erhalten beide 0 Punkte.
Keine Zeitabhängigkeit.
Gibt es doppelte Tipps, erhalten beide 0 Punkte.
Ok.
Tabellenname: Punkte
id
id_v
tipp1
tipp1_plus
tipp2
tipp2_plus
gesamt_pkt
In welcher Spalte steht denn der Name?
--roro
id_v ist eine Zahl, die dann mit der user-Tabelle verknüpft wird!
Hello,
Das heißt, dass Bernd die 23 Punkte nicht bekommt, weil Otto auch die 23 getippt hat.
Aber Du willst doch sicher noch registrieren, was Bernd getippt hat, oder wird der Tipp als Ganzes abgelehnt?
berechnen zu lassen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Das habe ich ja schon. Es geht wirklich nur um die Prüfung, wer die gleichen Tipps abgibt.
Beide gleichen Tipps => beide 0 Punkte!
Hello,
Aber Du willst doch sicher noch registrieren, was Bernd getippt hat, oder wird der Tipp als Ganzes abgelehnt?
Das habe ich ja schon. Es geht wirklich nur um die Prüfung, wer die gleichen Tipps abgibt.
Du möchtest also ein zusätzliches Statement für die Punkte aus Spalte 1 und noch ein weiteres für die Punkte aus Spalte 2?
Oder möchtest Du möglichst alles mit einem Statement abwickeln?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Punkt 1 und Punkt 4 habe ich bereits. Punkt 2 und 3 bekomme ich irgendwie nicht hin!
Um es verständlicher zu machen ...
Die Punkteübertragung von Tipp1 auf Tipp1_plus und Tipp2 auf Tipp2_plus, aber eben mit einer Prüfung auf Doppelung!
Den Rest habe ich mir schon programmiert.
Hello,
Um es verständlicher zu machen ...
Die Punkteübertragung von Tipp1 auf Tipp1_plus und Tipp2 auf Tipp2_plus, aber eben mit einer Prüfung auf Doppelung!
Deine Reihenfolge musst Du entsprechend anpassen
Tabelle sperren
Nachschauen, ob es einen Datensatz mit der Punktzahl in der Spalte1 gibt
Nachschauen, ob es einen Datensatz mit der Punktzahl in der Spalte2 gibt
Die Ergebnisse auswerten und daraus den neuen Datensatz zusammenstellen und eintragen
Tabelle freigeben.
Das sind also zwei selects und ein Insert.
Die beiden Selects könntest Du auch noch zusammenfassen mit einem "or" und dann in PHP auswerten
Schöner wäre die Lösung mit einem Self-Join, aber ich weiß nicht, ob der bei Insert gestattet ist.
Da müssten mal die DBMS-Spezialisten ran...
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hm, ich kann dir folgen.
Einmal die Daten von Tipp1 und Tipp2 SELECTen, mit PHP ein script basteln und das ganze wieder UPDATEn (nicht INSERTen, weil Daten ja vorhanden sind)!
Aber wie baue ich das Script? Darauf will ich hinaus. Werde bestimmt ein Array machen müssen, aber wie stelle ich dann die beziehung zu "id_v" (User-ID) her?
Hello,
Du solltest Dir erst nochmal Klarheit verschaffen, über die Spielregeln.
Daraus kann man dann ein Datenmodell entwickeln und die Regeln für die Datenmanipulation /Punkteberechnung aufstellen
Deine Regeln sind nämlich noch ganz schön schwammig.
Und wenn man dann dann die Tabellen etwas geschickter aufbaut (Stichwort Normalisierung), dann löst sich das Problem vielleicht viel leichter...
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Spielregeln stehen fest. Will gern das umsetzen, was ich bereits hier geschrieben habe.
Wo sind die Regeln schwammig?
Hello,
Spielregeln stehen fest. Will gern das umsetzen, was ich bereits hier geschrieben habe.
Wo sind die Regeln schwammig?
Zitat:
Was soll passieren?
User haben bestimmte Tipps abgegeben. In meinem fall von 1 bis 30. Haben 2 User die gleiche
Zahl bei Tipp1 und/oder bei Tipp2 abgegeben, dann erhalten sie 0 Punkte, statt die von Ihnen
getippten Zahl.
Ent oder weder?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Ent oder weder?
Was Ent oder weder?
Juhu, ich habe es jetzt doch hinbekommen! Freu!
Geht also doch mit einer Tabelle! *g*
Thread closed.