Sorteren op laatste datum

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nils

Nils

26/03/2007 15:30:00
Quote Anchor link
Hallo,

Ik heb het volgende probleem. Er zitten in de database een hoop documenten. Sommige documenten met dezelfde documentcode en een andere revisie(versie). Ik wil dus eigenlijk dat als er documenten zijn met dezelfde documentcode alleen het document word getoont met de laatste ontwerp_datum en de rest waar geen dubbele van is ook echoën.

Alleen heb ik rondgekeken en zelf geprobeerd maar ik kom er maar niet achter hoe ik dit kan oplossen. Ik ben ook even aan de gang geweest met een sub query maar ik kom er niet uit. Begrijp ook niet precies hoe te realiseren.

Voor degene die me een richting in kunnen sturen of uit kunnen leggen alvast bedankt!

mvg,

Nils van Woensel


Dit is wat ik tot nu toe heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

$query2
=
"
SELECT
 MAX(datum_ontworpen),
 bedrijf,documentcode,omschrijving,revisie,datum_ontworpen,datum_ontvangen,status,documentsoort,situatie,aantekeningen
FROM
 documenten
WHERE
 projectnummer LIKE '%"
.$_POST["docproject"] . "%'
AND
 bedrijf LIKE '%"
. $_POST["bedrijf"]. "%'
GROUP BY
 documentcode,bedrijf,omschrijving,revisie,datum_ontworpen,datum_ontvangen,status,documentsoort,situatie,aantekeningen
ORDER BY
 bedrijf ASC
"
;


?>


Wanneer ik bij de GROUP BY alleen documentcode neerzet filterd hij netjes de dubbele documentcodes eruit maar helaas pakt hij volgens mij de eerste die hij in de database tegenkomt en niet de laatste datum_ontworpen.
Gewijzigd op 01/01/1970 01:00:00 door Nils
 
PHP hulp

PHP hulp

20/11/2024 15:22:27
 
Frank -

Frank -

26/03/2007 15:47:00
Quote Anchor link
Quote:
Wanneer ik bij de GROUP BY alleen documentcode neerzet filterd hij netjes de dubbele documentcodes eruit maar helaas pakt hij volgens mij de eerste die hij in de database tegenkomt
Dat is functionaliteit van MySQL en heeft helemaal niets met SQL te maken. Sterker nog, het kán niet eens in SQL, de query slaat dus nergens op.

Wanneer je GROUP BY gebruikt, maak je een groep records aan en ga je van deze groep in zijn geheel bepaalde eigenschappen opvragen. De records in deze groep hebben echter niet dezelfde datum. Deze datum kun je dus niet opvragen, het is geen eigenschap van de hele groep. Kan niet, bestaat niet, onzin. Punt.

Een goede database, bv. PostgreSQL, had dan ook een error gegeven op deze query.

Oplossing voor jouw probleem: Pak met een subquery eerst de records waarin moet worden gezocht, de meest recente versie. ORDER BY datum DESC LIMIT 1
 
- wes  -

- wes -

26/03/2007 15:56:00
Quote Anchor link
@frank wat schuift dat nou die postgresql reclame de hele dag?
 
Nils

Nils

26/03/2007 16:09:00
Quote Anchor link
hmm ja dit heb ik ook gepbrobeerd maar ik ben miss daar niet helemaal in thuis omdat ik me niet voorgesteld krijg hoe ik deze functie zo kan bouwen dat het werkt. Ik weet dus neit zo wat ik met wat moet vergelijken enz.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.