Avatar billede webname Nybegynder
02. januar 2008 - 00:35 Der er 18 kommentarer og
1 løsning

Group by ?

Hej Oracle Eksperter,

Et lille hurtigt problem i 2008. Burde dette ikke kunne lade sig gøre?
"SELECT * FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PRODUKTNAVN"

Eller hedder Group funktionen noget andet i Oracle?

På forhånd tusind tak.

Hilsen Jannik
Avatar billede thesurfer Nybegynder
02. januar 2008 - 01:05 #1
Hvilken fejl får du?

Hvis GROSSIST er af typen tal (dvs ikke streng/tekst), skal der ikke '-tegn udenom værdien..

Dvs: WHERE GROSSIST = 2
Avatar billede thesurfer Nybegynder
02. januar 2008 - 01:11 #2
Hvad prøver du egentligt på..? :-)
Avatar billede thesurfer Nybegynder
02. januar 2008 - 01:11 #3
Mon det her er noget du kan bruge?: http://www.psoug.org/reference/group_by.html
Avatar billede webname Nybegynder
02. januar 2008 - 01:15 #4
Godt bud, men det hjælp ikke. Hvis jeg bare fjerner GROUP BY PRODUKTNAVN så virker det..
Avatar billede arne_v Ekspert
02. januar 2008 - 02:00 #5
"SELECT PRODUKTNAVN,AVG(PRIS) FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PRODUKTNAVN"

boer f.eks. virke !
Avatar billede arne_v Ekspert
02. januar 2008 - 02:03 #6
Naar man bruger GROUP BY saa kan select listen kun bestaa af de felter der er i GROUP BY
og af aggregerede funktioner.
Avatar billede webname Nybegynder
02. januar 2008 - 09:17 #7
Det jeg egentligt prøver, (til thesurfer) er at jeg kun vil trække alle ens ting ud én gang. Altså hvis det står "bil" i din database 50 gange, skal den kun udskrive den én gang, så man kun får alle "arter" frem.

arne_v: hvad mener du med AVG(PRIS)? Hvad gør avg?
Jeg har ligeledes prøvet dette
SELECT *, PRODUKTNAVN FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PRODUKTNAVN
og dette
SELECT *, PRODUKTNAVN AS PN FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PN
Men uden success
Avatar billede webname Nybegynder
02. januar 2008 - 10:43 #8
Det her virker næsten? "SELECT PRISLISTE2.PRODUKTNAVN FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PRISLISTE2.PRODUKTNAVN"
Meeen, jeg kan ikke access ID'en. Og jeg denne virker ikke:
"SELECT PRISLISTE2.PRODUKTNAVN, PRISLISTE2.ID FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PRISLISTE2.PRODUKTNAVN"
Avatar billede arne_v Ekspert
02. januar 2008 - 13:46 #9
Når du bruger GROUP BY kan du kun selecte de fleter der optræder i GROUP BY og
AVG/SUM/MAX/MIN af andre felter.
Avatar billede arne_v Ekspert
02. januar 2008 - 13:47 #10
"SELECT PRISLISTE2.PRODUKTNAVN, MAX(PRISLISTE2.ID) FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PRISLISTE2.PRODUKTNAVN"

og

"SELECT PRISLISTE2.PRODUKTNAVN, MIN(PRISLISTE2.ID) FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PRISLISTE2.PRODUKTNAVN"

bør f.eks. virke.
Avatar billede arne_v Ekspert
02. januar 2008 - 13:47 #11
Men måske er det i virkeligheden DISTINCT og ikke GROUP BY du leder efter ??
Avatar billede michael_stim Ekspert
02. januar 2008 - 13:49 #12
"SELECT PRISLISTE2.PRODUKTNAVN, PRISLISTE2.ID FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PRISLISTE2.PRODUKTNAVN, PRISLISTE2.ID"
Avatar billede webname Nybegynder
02. januar 2008 - 14:11 #13
Tak for jeres besvarelser. Når jeg bruger DISTINCT, hvordan kan jeg så få mit ID med ud?
Mit eksempel på brug af DISTICT: "SELECT DISTINCT(PRODUKTNAVN) FROM PRISLISTE2 WHERE GROSSIST = '2'". Kan jeg fx lave en AS (alias), af ID så ID ikke bliver påvirket af DISTINCT?
Avatar billede webname Nybegynder
02. januar 2008 - 14:16 #14
Dette virker.. Tak arne_v. Smid et svar ;-)
"SELECT PRODUKTNAVN, MAX(ID) AS NYID FROM PRISLISTE2 WHERE GROSSIST = '2' GROUP BY PRODUKTNAVN"
Avatar billede michael_stim Ekspert
02. januar 2008 - 14:17 #15
Men id og produktnavn er ikke unikke sammen.
id=1, produktnavn=strømper
id=2, produktnavn=huller

Giver dig begge rækker med distinct.
Avatar billede webname Nybegynder
02. januar 2008 - 14:26 #16
Ja, men...
Jeg har en rullemenu, hvor jeg skal vælge kategori mellem nogle papir mærker.
Det vil sige at der er mange under hver, som hedder det samme
ID  | Produktnavn
1    4CC
2    4CC
3    4CC
4    Pioneer
5    Pioneer
6    Tom og Otto

Og jeg skal i dette skærm billede, vælge om jeg vil redigre 4cc, pioneer, T & O osv.
Avatar billede michael_stim Ekspert
02. januar 2008 - 14:32 #17
på den måde. Så skulle databasedesignet nok have set anderledes ud. Men du fandt ud af det, og det er jo hovedsagen ;o)
Avatar billede arne_v Ekspert
02. januar 2008 - 16:13 #18
svar
Avatar billede webname Nybegynder
02. januar 2008 - 17:07 #19
Tak ;-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester