+ = table, - = column
+adres
-id
-adres (unique)
-plaats
+vermelding
-id
-adres_id
-info
-source_id
-adddate
+sources
-id
-name
-rank
Stel dat ik 2 maal een vermelding heb voor 1 adres, dan wil ik de vermelding tonen waarvan de source_id de hoogste rank heeft, en daarna sorteren op adddate binnen de overgebleven vermeldigen .
Als ik nu echt een query pak als deze:
select
adressen.adres ,
adressen.id as adres_id,
vermeldingen.adddate as adddate,
sources.rank as source_rank,
sources.name as source_name,
from
adressen,
vermeldingen,
sources
where
vermeldingen.adres_id=adressen.id and
adressen.plaats_id=1 and
sources.id=vermeldingen.source_type
order by sources.rank desc, vermeldingen.prijs desc
limit 0,20
Dan geeft hij netjes alle juiste adressen terug, maar ook 2 maal de vermelding voor het adres met 2 vermeldingen.
Als ik echter een group by vermeldingen.adres_id voor de order by invoeg krijg ik de verkeerde vermelding terug, de sortering op sources.rank doet z'n werk dan niet meer.
Als ik de group by achter de order by stop doet ie t niet meer en krijg ik een sql error.
Heeft iemand een idee of dit op te lossen is?