![]() |
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:
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.
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;
Hoffe ihr könnt mir helfen! :) Mit freundlichen Grüßen, Valle |
Re: Jeder DB-Zeile zufällig eine andere zuordnen
Doppelte Einträge kann man mit DISTINCT unterdrücken
|
Re: Jeder DB-Zeile zufällig eine andere zuordnen
Zitat:
Mit freundlichen Grüßen, Valle |
Re: Jeder DB-Zeile zufällig eine andere zuordnen
Du musst dir natürlich "gezogene" Benutzer merken
|
Re: Jeder DB-Zeile zufällig eine andere zuordnen
Zitat:
Mit freundlichen Grüßen, Valle |
Re: Jeder DB-Zeile zufällig eine andere zuordnen
Hat vielleicht noch jemand einer konkretere Idee? :)
Mit freundlichen Grüßen, Valle |
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.
|
Re: Jeder DB-Zeile zufällig eine andere zuordnen
Könnte man höchstens mit in einer SP realisieren
|
Re: Jeder DB-Zeile zufällig eine andere zuordnen
Zitat:
Zitat:
Es heißt Stored Procedure, soviel weiß ich noch *g* Mit freundlichen Grüßen, Valle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz