Avatar billede shakta Nybegynder
14. april 2006 - 11:34 Der er 7 kommentarer og
1 løsning

Problemer med at få korrekt output - Group by SUM

Først vil jeg lige sige at jeg ikke ved om det kan lade sig gøre.. det jeg vil have den til, men det er et forsøg værd

Er igang med en lille søgemaskine og her er det så muligt at at søge på en masse ord. Der er så en check box om det skal være en AND eller OR søgning. AND søgningen er intet problem for der skal den bare tage alt med som den finder. Men når vi kommer til OR, så skal den vægte hits'ene.. lidt som ordered weighted aggregation

Jeg benytte mig af oracle.. men princippet må næsten være det samme

Jeg har :
P Table med PID, name, company..

Query -
select name, company, 1 as degree from p where name like "søgeord1" and company like "søgeord1"
union
select name, company, 0.5 as degree from p where name like "søgeord2" and company like "søgeord2"
Hvordan laver jeg en ---> "group by SUM of degree"

Jeg får :
Name        Company          Degree
Bla          Bla              1
Blaa        Blaa              1
Hmm          Hmm              1
Bla          Bla              0.5
Blaa        Blaa              0.5

Jeg ønsker :
Name        Company          Degree
Bla          Bla              1.5
Blaa        Blaa              1.5
Hmm          Hmm              1


som sagt så ved jeg ikke om det kan lade sig gøre
Avatar billede kjulius Novice
14. april 2006 - 15:29 #1
Med det forbehold, at jeg ikke kender noget til Oracle, så vil jeg tro, at du vil kunne gøre det sådan:

SELECT name, company, SUM(degree) AS degreesum
FROM (
select name, company, 1 as degree from p where name like "søgeord1" and company like "søgeord1"
union
select name, company, 0.5 as degree from p where name like "søgeord2" and company like "søgeord2"
) AS tmp
GROUP BY name, company
Avatar billede shakta Nybegynder
14. april 2006 - 17:39 #2
desværre.. det så ellers lovende ud

men jeg kan kun :

select SUM(degree) from....

Hvis jeg siger : "SELECT name, company, SUM(degree)..."

Så brokker den sig :(
Avatar billede kjulius Novice
14. april 2006 - 19:54 #3
Prøv lige at vise mig den SQL du har prøvet, for jeg forstår ikke helt din tilbagemelding.
Avatar billede shakta Nybegynder
15. april 2006 - 10:31 #4
jeg har prøvet mange forskellige måder.. også uden group by for at se om det ville virke.

AS tmp er også fjernet for at kunne køre :)

FEJL query:

select name, company, sum(degree) as degreesum from
(select name, company, 1 as degree from p where name like '%p%' or company like '%p%'
union
select name, company, 0.5 as degree from p where name like '%Da%' or company like '%Da%');


Eneste godtaget query er den uden "name, company" :

select sum(degree) from
(select name, company, 1 as degree from p where name like '%p%' or company like '%p%'
union
select name, company, 0.5 as degree from p where name like '%Da%' or company like '%Da%');
Avatar billede pgroen Nybegynder
15. april 2006 - 11:17 #5
Husker du - som kjulius skriver - at tilføje 'GROUP BY name, company' ?
Det virker med garanti ikke uden...

SELECT name, company, sum(degree) as degreesum
  FROM (SELECT name, company, 1 as degree
        FROM p
        WHERE name like '%p%'
          OR company like '%p%'
        UNION
      SELECT name, company, 0.5 as degree
        FROM p
      `WHERE name like '%Da%'
          OR company like '%Da%'
        )
GROUP BY name, company;

- og hvis det ikke virker, hvad er så fejlmeddelelsen?
"Så brokker den sig", er en anelse upræcist :-)
Avatar billede shakta Nybegynder
15. april 2006 - 12:40 #6
sørme om ikke det passede.. jeg tror det var fordi jeg fjernede group by, sammen med AS tmp.. og prøvede så group by med name og company alene og det virkede jo så ikke.. men nu virker det og så smider jeg lige en order by degreesum på og så er den ordnet.. fedt nok..

tak for hjælpen

Så der må være en som gerne vil have smidt et par point i nakken.. ved ikke helt hvordan det virker, da jeg er ny herinde :)
Avatar billede kjulius Novice
15. april 2006 - 19:19 #7
Ja, systemet er ærlig talt ikke helt gennemskueligt for nye brugere.

Se evt. min kommentar her http://www.eksperten.dk/spm/689662
Avatar billede shakta Nybegynder
16. april 2006 - 16:45 #8
Jaa så blev jeg lidt klogere.. fandt også ud af at jeg skulle markere navnet på den man vil acceptere :O)

men det lykkedes og det er hovedsagen ;O)
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