Ik heb een setje tabellen waaruit ik een klein gedeelte data wil pakken te weten:
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:
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?
Ik heb al wat soortgeleike probemen gevonden hier op GOt,maar daar kwam het telkens uit op een nieuwe column van aan elkaar ge-concatte velden die dan gesort werden, wat natuurlijk belaberde performance geeft.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| + = 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:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| 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?
Ik heb al wat soortgeleike probemen gevonden hier op GOt,maar daar kwam het telkens uit op een nieuwe column van aan elkaar ge-concatte velden die dan gesort werden, wat natuurlijk belaberde performance geeft.
[ Voor 3% gewijzigd door killercow op 13-07-2007 10:33 ]
openkat.nl al gezien?