AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Jeder DB-Zeile zufällig eine andere zuordnen
Thema durchsuchen
Ansicht
Themen-Optionen

Jeder DB-Zeile zufällig eine andere zuordnen

Ein Thema von Valle · begonnen am 14. Dez 2008 · letzter Beitrag vom 15. Dez 2008
Antwort Antwort
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#1

Jeder DB-Zeile zufällig eine andere zuordnen

  Alt 14. Dez 2008, 12:14
Datenbank: MySQL • Version: 5.0 • Zugriff über: Unwichtig
HI DPler!

Ich versuche gerade ein Wichtelspiel für meine Community zu programmieren. Dabei ist es jetzt auch von Nöten, dass ich jedem User einen anderen zuordne. Wer das Wichtelspiel kennt, weiß was ich meine. Das Problem dabei ist aber, dass ich nicht weiß, wie ich das per SQL machen soll. Folgendes SQL habe ich mir schon selbst gebastelt:

SELECT name, (SELECT name FROM user AS b WHERE wichtelt = 1 AND b.name != a.name ORDER BY RAND() LIMIT 0, 1) AS wichtel FROM user AS a WHERE wichtelt = 1; Problem ist aber, dass in der Spalte "wichtel" (Durch das Sub-Select, ich hoffe das nennt man so. Gemeint ist das Select in den Klammern) User auch gerne mal doppelt vorkommen. Das darf aber nicht sein. Ich hätte das ganze schon hundert Mal mit einer beliebigen Scriptsprache gelöst, aber jetzt packt mich der Ehrgeiz, das alleine mit SQL zu machen, damit ich meine mangelhaften Kenntnisse darin etwas steigern kann.

Hoffe ihr könnt mir helfen!

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Jeder DB-Zeile zufällig eine andere zuordnen

  Alt 14. Dez 2008, 12:17
Doppelte Einträge kann man mit DISTINCT unterdrücken
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#3

Re: Jeder DB-Zeile zufällig eine andere zuordnen

  Alt 14. Dez 2008, 13:08
Zitat von mkinzler:
Doppelte Einträge kann man mit DISTINCT unterdrücken
Aber wie soll ich das in dem Fall anwenden?

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Jeder DB-Zeile zufällig eine andere zuordnen

  Alt 14. Dez 2008, 13:11
Du musst dir natürlich "gezogene" Benutzer merken
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#5

Re: Jeder DB-Zeile zufällig eine andere zuordnen

  Alt 14. Dez 2008, 13:59
Zitat von mkinzler:
Du musst dir natürlich "gezogene" Benutzer merken
Soweit war ich auch schon. Das ist ja auch ganz logisch, denn anders kann man ja gar nicht feststellen, ob ein Benutzer schon zugeordnet wurde oder nicht. Aber wie ich bereits schrieb, sind meine SQL-Kenntnisse viel zu schlecht für sowas. Ich kann das, was im Buch "PHP & MySQL für Kids" steht, was nicht wirklich mehr als Insert, Update, Delete und Select ist.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

Re: Jeder DB-Zeile zufällig eine andere zuordnen

  Alt 15. Dez 2008, 14:28
Hat vielleicht noch jemand einer konkretere Idee?

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#7

Re: Jeder DB-Zeile zufällig eine andere zuordnen

  Alt 15. Dez 2008, 14:49
Ich fürchte, dass das nicht in einem einzigen Query funktioniert. Was du tun musst, ist eine fixpunktfreie Permutation deiner Liste zu erstellen - und das geht mit SQL meines Wissens nicht.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Jeder DB-Zeile zufällig eine andere zuordnen

  Alt 15. Dez 2008, 14:50
Könnte man höchstens mit in einer SP realisieren
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#9

Re: Jeder DB-Zeile zufällig eine andere zuordnen

  Alt 15. Dez 2008, 16:25
Zitat von Dax:
Ich fürchte, dass das nicht in einem einzigen Query funktioniert. Was du tun musst, ist eine fixpunktfreie Permutation deiner Liste zu erstellen - und das geht mit SQL meines Wissens nicht.
Das ist doch mal ein Wort, Danke!

Zitat von mkinzler:
Könnte man höchstens mit in einer SP realisieren
Jaaa, genau. Was auch immer eine SP ist.

Es heißt Stored Procedure, soviel weiß ich noch *g*

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz