Portal > Foren > Datenbanken, Server, Betriebssysteme und sonstige Programmiersprachen > Datenbanken > Auslesen zweier verschiedener Datensätze in einem Query (mySQL)
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 12.11.2006, 12:44 Nach oben    #1
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard Auslesen zweier verschiedener Datensätze in einem Query (mySQL)

Tag,
ich hab hier ein Problem, bei dem ich nicht weitergekommen bin. Folgendes:

Es gibt eine UserTabelle, nennen wir sie einmal members.
In der Tabelle befinden sich UserDaten, is klar, unter Anderem die Felder userID, userName und gender (ist int).
Nun versuche ich, in einem Query zwei zufällige User auszulesen, die zwei verschidene Geschlechter haben und ein paar bestimmte UserIDs nicht enthalten (wird vom PHPScript bestimmt). MySQL Version ist gegeben, und zwar 4.3.
Ich hab bisher sowas versucht, was allerdings in die Hose ging:
Code:
SELECT DISTINCT gender, userName, userID
FROM users
WHERE (
gender = '1'
OR gender = '2'
) AND
(
userID != IN ('1', '2')
)
GROUP BY gender, userID
ORDER BY RAND( )
LIMIT 2
Ist auch klar, da die Syntax einfach falsch ist. Sieht bestimmt auch ziemlich unbeholfen aus der Query, aber ich wusste echt nicht mehr weiter. Hat jemand von euch vllt eine Idee?
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.11.2006, 14:49 Nach oben    #2
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 551
Standard

ich würde da sowas draus machen:
sql Code:
  1. SELECT gender, userName, userID
  2. FROM members
  3. WHERE gender IN (1, 2) AND userID NOT IN (1, 2)
  4. GROUP BY gender
  5. ORDER BY RAND( )
  6. LIMIT 2
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.11.2006, 14:59 Nach oben    #3
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Danke schonmal für deine Hilfe, das sieht schon sehr gut aus.
Seltsam ist, dass anscheinend das ORDER BY RAND () nicht greift. Sprich es werden immer wieder dieselben Datensätze ausgelesen (immer userID 1 (männlich) und userID 3 (weiblich)). Die anderen Datensätze werden nie selektiert. Weiß jemadn, wieso?
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.11.2006, 15:17 Nach oben    #4
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 551
Standard

vermutlich wegen dem GROUP BY...
versuch mal
sql Code:
  1. GROUP BY gender, RAND()
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.11.2006, 15:46 Nach oben    #5
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Verflixt. Durch dieses GROUP BY gender, RAND() wird nun aber wieder nicht nach Geschlechtern ausgewählt. Es kommt vor, dass zwei männliche und/oder zwei weibliche ausgewählt werden.
Code:
      SELECT gender, userName, userID
      FROM users
      WHERE gender IN (1, 2)
      GROUP BY gender, RAND()
      ORDER BY RAND( )
      LIMIT 2
Bei solche SQLABfragen bin ich immer fast am verzweifeln.
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.11.2006, 08:04 Nach oben    #6
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 287
Standard

Gabs da nichtmal nen Bug mit ORDER BY RAND() ?
Hatte ich zumindest vor längerer Zeit mal bei nem Quiz. Da wurden 'zufällig' immer die ersten beiden Datensätze ausgegeben.

Also alle User auslesen und Array mischen.
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.11.2006, 08:28 Nach oben    #7
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Zitat:
Zitat von ex³ Beitrag anzeigen
Gabs da nichtmal nen Bug mit ORDER BY RAND() ?
Hatte ich zumindest vor längerer Zeit mal bei nem Quiz. Da wurden 'zufällig' immer die ersten beiden Datensätze ausgegeben.

Also alle User auslesen und Array mischen.
Natoll, der Bug würde mir ja gerade noch fehlen. Danke für den Hinweis ich werd mal nachsehn.
Alle User auslesen wäre viel zu resourcenlastig. Dann kann ich ja gleich 2 Queries losschicken - Sinn der Sache ist ja, gezielt meine 2 User in einem Query auszulesen.

//edit uff .. http://bugs.mysql.com/bug.php?id=817
Jo ich weiß schon, MySQL Version updaten usw .. Ist aber nicht mein MySQL (bitte keine Kommentare dazu )
__________________
http://www.ChrisDiary.De

Geändert von Chr!s (13.11.2006 um 08:31 Uhr)
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.11.2006, 19:30 Nach oben    #8
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 287
Standard

Aber dieser Bug trifft doch in deinem Fall zu oder?
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.11.2006, 19:57 Nach oben    #9
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Zitat:
Zitat von ex³ Beitrag anzeigen
Aber dieser Bug trifft doch in deinem Fall zu oder?
Ja, genau das ist ja das Problem. Doch die MySQLVersion vom Kunden ist (mal wieder) gestellt (er liegt auf nem shared Server) ...
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dynamische mySQL Query la-finest PHP-Programmierung 2 25.01.2007 16:36
MySQL Fehlermeldung: Your query requires a full tablescan ... Chr!s Datenbanken 12 31.07.2006 21:45
MySQL Query wird nicht ausgeführt Garnele Datenbanken 6 01.04.2006 03:17
MySQL 5.1 kommt in die Beta-Phase Ben Nachrichten 1 02.03.2006 14:31
[SQL] Zufallsdatensatz auslesen - MySQL 3.23 Ben Tutorials 0 16.03.2005 00:06


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45