Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Jeder DB-Zeile zufällig eine andere zuordnen (https://www.delphipraxis.net/125893-jeder-db-zeile-zufaellig-eine-andere-zuordnen.html)

Valle 14. Dez 2008 11:14

Datenbank: MySQL • Version: 5.0 • Zugriff über: Unwichtig

Jeder DB-Zeile zufällig eine andere zuordnen
 
HI DPler! :hi:

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:

SQL-Code:
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

mkinzler 14. Dez 2008 11:17

Re: Jeder DB-Zeile zufällig eine andere zuordnen
 
Doppelte Einträge kann man mit DISTINCT unterdrücken

Valle 14. Dez 2008 12:08

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

Zitat von mkinzler
Doppelte Einträge kann man mit DISTINCT unterdrücken

Aber wie soll ich das in dem Fall anwenden? :gruebel:

Mit freundlichen Grüßen,

Valle

mkinzler 14. Dez 2008 12:11

Re: Jeder DB-Zeile zufällig eine andere zuordnen
 
Du musst dir natürlich "gezogene" Benutzer merken

Valle 14. Dez 2008 12:59

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

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

Valle 15. Dez 2008 13:28

Re: Jeder DB-Zeile zufällig eine andere zuordnen
 
Hat vielleicht noch jemand einer konkretere Idee? :)

Mit freundlichen Grüßen,

Valle

Dax 15. Dez 2008 13:49

Re: Jeder DB-Zeile zufällig eine andere zuordnen
 
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.

mkinzler 15. Dez 2008 13:50

Re: Jeder DB-Zeile zufällig eine andere zuordnen
 
Könnte man höchstens mit in einer SP realisieren

Valle 15. Dez 2008 15:25

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

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! :thumb:

Zitat:

Zitat von mkinzler
Könnte man höchstens mit in einer SP realisieren

Jaaa, genau. :stupid: Was auch immer eine SP ist. :mrgreen:

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

Mit freundlichen Grüßen,

Valle


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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