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
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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.