php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-03-2009, 20:24
nohfreak
 Registrierter Benutzer
Links : Onlinestatus : nohfreak ist offline
Registriert seit: Nov 2007
Beiträge: 160
nohfreak ist zur Zeit noch ein unbeschriebenes Blatt
Standard Zufälligen Datensatz nach relativer Häufigkeit

Moin Leute,

also ich hätte da malwieder ein kleines Problemchen, dessen ( gute ) Lösung ich nicht ergoogeln konnte.

Also, ich habe eine Tabelle mit Datensätzen. Jeder dieser Datensätze enthält ein Integer-Feld mit einer Zahl drin. Diese Zahlen können mehrfach vorkommen.

Was ich nun möchte ist im Prinzip eine der Nummern auszuwürfeln, wobei deren relative Häufigkeit beachtet werden soll. Steht eine Zahl also in 2 Feldern, so soll die Wahrscheinlichkeit sie zu treffen doppelt so hoch sein wie für eine Zahl, die nur in einem Feld existiert.

Da die ja alle in einer Tabelle sind hat man das ja aber schon mit drin, wenn man einfach zufällig einen auswürfelt. Ich hatte dazu folgendes gefunden:


Code:
SELECT foo FROM bar WHERE blablabla = blabalba ORDER BY RAND()
Allerdings stand überall dabei, dass das bei größeren Datenmengen ih-Pfui-ih-Bah wäre, weil für jeden Datensatz ein Zufallswert erzeugt, und die dann danach sortiert würden. Da es bei mir mehrere tausend Datensätze sind, und die Funktion auf JEDER Unterseite aufgerufen wird scheint mir das also keine gute Lösung zu sein.

Kennt da jemand noch ein besseren Weg ?

Danke schonmal.

Gruß,
Aza
Mit Zitat antworten
  #2 (permalink)  
Alt 04-03-2009, 20:42
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Zufälligen Datensatz nach relativer Häufigkeit

http://dev.mysql.com/doc/refman/5.1/...ect.html#c2161
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 04-03-2009, 20:56
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Zitat:
Was ich nun möchte ist im Prinzip eine der Nummern auszuwürfeln, wobei deren relative Häufigkeit beachtet werden soll. Steht eine Zahl also in 2 Feldern, so soll die Wahrscheinlichkeit sie zu treffen doppelt so hoch sein wie für eine Zahl, die nur in einem Feld existiert.
Ergibt sich das nicht aus dem Umstand, dass genannte Zahl eben doppelt so oft in der Datenbank vorhanden ist wie die Andere?
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #4 (permalink)  
Alt 04-03-2009, 21:16
nohfreak
 Registrierter Benutzer
Links : Onlinestatus : nohfreak ist offline
Registriert seit: Nov 2007
Beiträge: 160
nohfreak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja, ergibt sich daraus, ich wollte nur zwecks Klarheit noch ein Beispiel bringen, weil ich selbst in solchen Foren wie diesem oft nicht verstehe, was die Leute eigentlich wissen wollen.

Ein Dank an wahsaga, klappt astrein. Habs ein wenig anders gemacht zwar, aber vom Prinzip das Selbe:

PHP-Code:
# Einträge mit userId zählen
    
$stmt $db->query('SELECT
                          COUNT(*) AS count
                        FROM 
                          entries
                        WHERE
                            entryIsValid = 1
                          AND
                            entryUserId != 0'
    
);
    
$count $stmt->fetchAll();
    
$count $count[0]['count'];
    
    
# einen zufälligen auswürfeln
    
$rand rand(0$count);
    
    
# User-ID des zufällig gewählten holen
    
$stmt $db->query('SELECT
                          entryLayerId
                        FROM
                          entries
                        WHERE
                            entryIsValid = 1
                          AND
                            entryUserId != 0
                        LIMIT ' 
$rand .', 1'                   
    
);
    
$userId $stmt->fetchAll(); 

EDIT:
PHP-Code:
# einen zufälligen auswürfeln     
$rand rand(0$count 1); 
So muss es heißen, sonst würfelt er natürlich manchmal die 14, wobei der zähler nur bis 3 geht, weils ja bei 0 anfängt. Whoooops.

Geändert von nohfreak (04-03-2009 um 21:21 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:42 Uhr.