Antworten auf deine Fragen:
Neues Thema erstellen

mysql max()

cmfa

Nicht mehr ganz neu hier

Hi leutz

meine sql Funktionen funktioniern soweit aber
PHP:
SELECT pid FROM `pictures` WHERE bdw = 0 order by   Max(hits)
sie gibt aktuell nur den ersten Wert von max() wieder. In der Spalte hits kann der max Wert n mal drin sein. Wie bekomme ich alle Werte?
Kann man das ganze evtl. noch mit rand() kombinieren da ich pid auch per Zufall benötige. Beispiel bei hits kommt 10 mal 25 vor, von den 10 mal soll dann per zufall pid ermittelt werden.
PHP:
SELECT pid FROM `pictures` WHERE bdw = 0 order by rand() Limit 1
ich hoffe ich habe mich verständlich ausgedrückt.

VG CMFA
 

cmfa

Nicht mehr ganz neu hier

AW: mysql max()

hi,

max() brauche ich um den höchsten Wert der Spalte zu ermitteln, dieser kann n mal vorhanden sein, dann soll an Hand des höchsten Wert der Rest ermittelt werden. Wenn der Wert n mal das ist soll zufällig einer davon ermittelt werden.

CMFA
 

cmfa

Nicht mehr ganz neu hier

AW: mysql max()

ja ist eine möglichkeit, die ich auch ins auge gefasst habe, dann bleibt aber nur das problem mit den doppelt und dreifachen, das ganze soll für ein bild der woche dienen, die bilddatenbank umfasst ca 15000 Bilder

ach ja der max() wert gibt mir ja nur die höchsten wieder wenn ich sortiere alle, ich will ja nur die höchsten haben...
 
Zuletzt bearbeitet:

cmfa

Nicht mehr ganz neu hier

AW: mysql max()

sind das dann wirklich duplikate? denn ich will ja eine zufällige auswahl der "duplikate" spalte(pid)
 

Sturmkraehe

Nicht mehr ganz neu hier

AW: mysql max()

Nur mal kurz das ich es richtig verstehe du willst rausfinden welches Bild quasi am öftesten angeschaut(hits) worden ist und das ist dann das bild des tages?

und wenn eben 10 Bilder gleich oft angeschaut worden sind dann willst du das zufällig eines von den gezeigt wird?

Ich glaube nämlich das MAX immer nur einen wert zurückgibt...! Bin mir aber gerade auch nicht ganz sicher

schau mal ob hier was dabei ist:
http://www.techonthenet.com/sql/max.php
hab nicht alles durchgelesen ;)
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: mysql max()

Es gibt eine Lösung, mit der du eine zufällige Zeile je Gruppe (gleicher Zugriffszahlen) zurückbekommst, aber die ist reichlich ineffizient bei größeren Tabellen.

Ich empfehle, zuerst die 10 per Hits gruppierten Zugriffszahlen zu holen (SELECT ... GROUP BY hits). Dann kannst du entweder pro Gruppe alle Datensätze holen und die PHP-seitig zufällig mischen und eines auswählen, oder direkt einen zufälligen Datensatz mit dieser Hit-Zahl pro Gruppe auswählen.

Dieser Ansatz löst zwar (Anzahl gewünschter Bilder + 1) Datenbankanfragen aus, aber 20 Queries mit je 0,003 Sekunden Rechenzeit sind effizienter als 1 Query mit 15 Sekunden.


Duddle
 

Zampano_

Nicht mehr ganz neu hier

AW: mysql max()

Kannst es auch einfach mit einem Subselect machen:
Code:
SELECT * FROM pictueres where hits = (select max(hits) from pictures)
und wenn du nur 10 davon haben willst, hängst du noch ein limit dran...
 

SineTempore

Nicht mehr ganz neu hier

AW: mysql max()

Wenn man Zampano_ s query noch ein bisschen erweitert, kommt glaube ich genau das raus was du willst:
Code:
SELECT *
FROM   pictures
WHERE  hits = (SELECT max(hits)
               FROM   pictures)
ORDER  BY rand()
LIMIT  1
Diese Query liefert einen zufälligen Datensatz aus der Menge mit den höchsten hits.
 

cmfa

Nicht mehr ganz neu hier

AW: mysql max()

[code schrieb:
SELECT *
FROM pictures
WHERE hits = (SELECT max(hits)
FROM pictures)
ORDER BY rand()
LIMIT 1 [/code]

eine ähnliche funktion hatte ich mir zusammen gebaut, funktioniert auch, hatte nur den Nachteil das die Spalte 'pid' der Primärschlüssel ist und die kleinste pid id ausgegeben wird.
Bei deiner Abfrage geschieht genau das gleich. Die Spalte 'bdw' muss auch mit in diese Abfrage.:hmpf:
Code:
SELECT pid 
FROM `pictures` 
WHERE bdw = 0 and hits = (SELECT max(hits) 
FROM `pictures`) 
ORDER  BY rand() LIMIT  1
Hier kommt garnicht bei raus:uhm:

VG
 

SineTempore

Nicht mehr ganz neu hier

AW: mysql max()

da wär halt mal interessant wie genau deine tabelle aufgebaut ist. z.b. was bedeutet bdw?
syntaktisch ist dein query richtig.
wenn es keinen datensatz gibt, der die meisten hits UND GLEICHZEITIG bdw = 0 hat, wirst du kein Ergebnis bekommen.
Die pid ist meinem Query übrigens schnuppe. Ich hab das Query vorhin getest und es kam immer wieder ein anderer Datensatz raus.
 

cmfa

Nicht mehr ganz neu hier

AW: mysql max()

hi,

bdw heiß "Bild der Woche" in diesen steht z.B 01;02;03 etc.
was genau möchtets du sehen? möchtest du eine Auszug aus myphpadmin?
 

Duddle

Posting-Frequenz: 14µHz

AW: mysql max()

Um mal diese Ratespielchen zu beenden: Nehmen wir an, deine Tabelle hat folgende Einträge

Code:
pid  |  bdw  | hits
1    |  0    | 55
2    |  0    | 55
3    |  0    | 33
4    |  08   | 999

Welches Ergebnis willst du dann?


Duddle
 

cmfa

Nicht mehr ganz neu hier

AW: mysql max()

hi,

in deinem Beispiel sollte es 1 oder 2 sein, da sie in den hits ja 55 haben. Wenn nur einmal 55 (pid =>2) dann ist 2 gewünscht

VG
 

Duddle

Posting-Frequenz: 14µHz

AW: mysql max()

Dann sollte die Lösung die von SineTempore passen, minimalst angepasst:
Code:
SELECT *
FROM   pictures
WHERE  hits = (SELECT max(hits)
               FROM   pictures WHERE bdw = 0)
AND bdw = 0
ORDER  BY rand()
LIMIT  1

Das innere Ding findet alle noch-nicht-bdw-Bilder und holt deren maximale Hits. Das Äussere holt dann alle Bilder, die diese Hit-Anzahl haben und kein bdw sind, mischt sie und gibt eine Zeile zurück.

Falls das nicht funktioniert musst du Fehlerabfragen einführen.


Duddle
 

cmfa

Nicht mehr ganz neu hier

AW: mysql max()

hallo,

danke vorerst für die etwas schwere Geburt:rolleyes:. Ich teste es jetzt erstmal.

VG
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben