[php] goed filteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een klein scriptje die de laatste reacties van me site afhaald. Nu werkt dat allemaal prima. Probleem is alleen dat als mensen 3x reageren op het zelfde bericht, dat er dus 3x de zelfde titel onder elkaar komt te staan op de reacteis pagina.

Nu heb ik DISTINCT al geprobeerd, maar dat haalt niets uit. En GROUP BY titel achteraan ook niet. Wat is er fout aan mijn query?


PHP:
1
2
3
4
5
6
7
8
<?
$result = mysql_query('
SELECT r.date,r.cato,r.nid,r.titel,g.id,g.gebruikersnaam
FROM reacties r,gebruikers g
WHERE r.user = g.id 
ORDER BY r.date
DESC LIMIT '.$per_page.'');
?>

Acties:
  • 0 Henk 'm!

Verwijderd

group by gebruikersnaam proberen :)

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:51
Een group by moet je enkel gebruiken als je aggregated functions gebruikt in je SELECT.

Een DISTINCT werkt op 'row-niveau'. In jouw geval zal dat dus ook niet werken, aangezien je geen dubbele rows ophaalt.

Wat wil je nu precies laten zien qua gegevens ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik achter ORDER BY r.date een GROUP BY r.titel of r.gebruikersnaam zet krijg ik.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
whoami schreef op 15 May 2003 @ 17:26:
Een group by moet je enkel gebruiken als je aggregated functions gebruikt in je SELECT.

Een DISTINCT werkt op 'row-niveau'. In jouw geval zal dat dus ook niet werken, aangezien je geen dubbele rows ophaalt.

Wat wil je nu precies laten zien qua gegevens ?
Ik wil dat hij overal de laatste titel laat zien.

wordt er bv 3x achter erlkaar gereageerd op het zelfde nieuws bericht, dat hij dan de laatste titel laat zien.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:51
Als je enkel de titel wilt laten zien, waarom haal je dan zoveel extra gegevens op?

Haal dan gewoon de titel op:
code:
1
2
3
SELECT DISTINCT r.titel
FROM ......
WHERE ...

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry, was denk ik een beetje onduidelijk. Die andere dingen moeten natuurlijk ook opgehaald worden, ID, date, posterid, poster naam. Maar dat hij maar 1x een titel laat zien.

Dus max 1 regel per bericht snap je?

Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 17-09 19:55
Verwijderd schreef op 15 May 2003 @ 17:27:
Als ik achter ORDER BY r.date een GROUP BY r.titel of r.gebruikersnaam zet krijg ik.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Je moet in mysql ook eerst group by en dan order by
SELECT [STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL]
select_expression,...
[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
[LIMIT [offset,] rows | rows OFFSET offset]
[PROCEDURE procedure_name(argument_list)]
[FOR UPDATE | LOCK IN SHARE MODE]]

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
robbertkrebbers schreef op 15 mei 2003 @ 17:34:
[...]

Je moet in mysql ook eerst group by en dan order by

[...]
Ja ok, daar heb je gelijk in. Foutje van mijn kant. Maar, hij laat nu wel de juiste reacties zien. Titel maar 1x, maar als er dan een nieuwe replie gepost wordt, dan komt die niet bovenaan de lijst :w

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Kick

Acties:
  • 0 Henk 'm!

  • Mickman
  • Registratie: Juni 2001
  • Laatst online: 27-08 11:32
Tja, dat kan je toch wel zelf bedenken.
Nu moet je je query zo omvormen dat hij de resultaten ordered by date
Kan je gewoon opzoeken in de manuals van (my)SQL.
GoT is geen manual, see.....
Pagina: 1