29. december 2004 - 16:08Der er
8 kommentarer og 1 løsning
distinct samt order by
Jeg er gået helt i stå på en umiddelbart let sql... jeg skal have valgt nogle poster ud, et felt distinct og så skal der orders by. Her er mit eksempel men det virker ikke - nogle gode forslag?
SELECT arrival, price, distinct(new_obj_id) FROM holiday.bookings_summer boo, holiday.OBJECT OBJECT WHERE boo.kat_nr = OBJECT.object_id AND (valength = '1*uge' OR valength = '7*nætter') AND boo.country = 'Italien' GROUP BY new_obj_id ORDER BY booking_id desc
med ovenstående får jeg fejlen "manglende udtryk" med henvisning til "distinct".
Hvis jeg undlader at udvælge arrival og price så der kun står distinct(new_obj_id) melder den fejlen "ikke et SELECTed udtryk" med henvisning til "booking_id" i min order by.
Synes godt om
Slettet bruger
29. december 2004 - 17:41#3
Distinct virker på alle felter i select, så prøv: SELECT distinct arrival, price, new_obj_id FROM ....
Hvad er formålet med din GROUP BY clause? - Det giver ikke rigtig mening at gruppere på en DISTINCT værdi, og du skal have alle dine felter med i GROUP BY'en, eller også skal du summere på dem; fx. noget i stil med:
SELECT max(arrival), sum(price), new_obj_id FROM holiday.bookings_summer boo, holiday.OBJECT OBJECT WHERE boo.kat_nr = OBJECT.object_id AND (valength = '1*uge' OR valength = '7*nætter') AND boo.country = 'Italien' GROUP BY new_obj_id, booking_id ORDER BY booking_id desc
godt - så lad mig sige det på en anden måde hvis det kan hjælpe på at forstå det resultat jeg gerne vil have.
Jeg skal have alle data ud, hvor min WHERE-statement bliver opfyldt MEN jeg vil kun have unikke new_obj_id ud. Da rækkerne indeholde mange ens new_obj_id men hvor arrival og price er hver eneste tilfælde er forskellige kan jeg ikke køre distinct på alle 3 fordi jeg så vil få dublerende new_obj_id ud.
Ok, du siger at arrival og price er forskellige, men at du kun vil have unikke new_obj_id ud. Hvilke af de forskellige arrival og price vil du så have ud pr. new_obj_id? - den højeste, den laveste, gennemsnittet, eller noget helt fjerde
SELECT arrival, price, new_obj_id FROM holiday.bookings_summer boo, holiday.OBJECT obj1 WHERE boo.kat_nr = obj1.object_id AND (valength = '1*uge' OR valength = '7*nætter') AND boo.country = 'Italien' and booking_id = (select max(booking_id) from holiday.object obj2 where obj1.new_obj_id = obj2.new_obj_id)
hvis det virker, så få givet pgroen nogle point, eller uddyb noget mere :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.