Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Mehrfacheinträge auslassen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Mehrfacheinträge auslassen


 
ewrson
22-06-2010, 01:26 
 
Hallo php-resource gemeinde :)

ich versuche jetzt schon länger, dass mehrfach einträge beim auslesen der mysql db ausgelassen werden soll:

http://ged-sippe.de/extra/db.jpg
SELECT DISTINCT id, user, date FROM users WHERE status > 0 ORDER BY date DESCAber komme in moment irgendwie nicht weiter :{

Wichtig ist hierbei das nach datum sortiert wird, habe schon gelesen das man auch über 'ORDER BY' die möglichkeit hätte, die ich leider aber in diesem fall nicht nutzen kann.
Gibt es noch andere möglichkeiten?
Vielen dank im voraus für hilfe.

Gruß

 
AmicaNoctis
22-06-2010, 01:42 
 
Hallo,

distinct bezieht sich auf alle abgerufenen Spalten, bei dir ist aber nur eine gleich. Sieh dir mal group by an.

Gruß,

Amica

 
ewrson
22-06-2010, 12:17 
 
Hi,

danke für den tipp, aber wenn ich es so mache:
SELECT id, user, date FROM users GROUP BY user ORDER BY date DESCWerden mir komischerweise keine neuen einträge aktuellere datums angezeigt?

http://ged-sippe.de/extra/db_1.jpg


Der rote bereich sollten angezeigt werden, aber es wird der blaue genommen? (bild ohne GROUP BY)
Es wird scheinbar nicht das aktuelle genommen sondern der aller erste eintrag, ohne rücksicht auf das datum :(

http://ged-sippe.de/extra/db_2.jpg

Bei 'ODER BY' wird nur das ASC bzw. DESC berücksichtigt, nicht aber date oder id :confused:

 
medium22
22-06-2010, 13:25 
 
Hallo,


Wieso eigentlich GROUP BY id wenn Du nach user gruppieren möchtest? Die id wird hier sowieso einmalig und für eine gruppierung dementsprechend sinnlos sein.

 
ewrson
22-06-2010, 13:44 
 
Hallo,


Wieso eigentlich GROUP BY id wenn Du nach user gruppieren möchtest? Die id wird hier sowieso einmalig und für eine gruppierung dementsprechend sinnlos sein.Sry, hast natürlich recht habe mich vertippt ;)
Aber das problem bleibt bestehen :(

 
ewrson
22-06-2010, 15:21 
 
Hab jetzt die lösung:

SELECT a.id, a.user, a.date
FROM users a
WHERE a.date = (SELECT max(b.date) FROM users b WHERE b.user = a.user)
ORDER BY a.date DESCVielen dank für die mithilfe :D

 
AmicaNoctis
22-06-2010, 18:09 
 
Hallo,

wenn dir das zu nicht zu langsam ist…

Nimm besser eine unkorrelierte Unterabfrage (uncorrelated subquery) oder einen negativen left Join.

Gruß,

Amica

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:51 Uhr.