Autor Zpráva
luax
Profil
zdravím,
zkouším dělat fulltextové vyhledávaní a narazil jsem na problém s GROUP BY.

Mám definované tabulky subjekt (informace o firmách, čím se zabývají ...)
a slovo(což je jen tabulka plná slov) a mezi nimi mám vazební tabulku rejstrik_subjektu (abych věděl,
které slovo se vykytuje v názvu a popisu činnosti daného subjektu).


Create table "subjekt" (

"id_subjekt" BigSerial NOT NULL UNIQUE,
"nazev" Varchar(150),
"popis_cinnosti" Text,
primary key ("id_subjekt")) ;

Create table "slovo" (
"id_slovo" BigSerial NOT NULL UNIQUE,
"slovo" Char(40) NOT NULL UNIQUE
primary key ("id_slovo")
);

Create table "rejstrik_subjektu" (
"id_subjekt" Bigint NOT NULL,
"id_slovo" Bigint NOT NULL,
"vaha_slova" Integer,
primary key ("id_subjekt","id_slovo")
);


Teď potřebuji napsat dotaz, který mi vrátí název, popis činnosti a id těch subjektů,
které obsahují v názvu nebo v popisu činnosti slovo XXX nebo slovo YYY
a výsledek setřídí podle váhy slova

Teoreticky by měl fungovat následující dotaz:


 SELECT subjekt.id_subjekt, název, popis_činnosti, celková_váha_slova 

FROM subjekt,rejstřík_subjektu, (
SELECT rejstřík_subjektu.id_subjekt, rejstřík_subjektu.id_slovo,
ŠUM(rejstřík_subjektu.váha_slova) AŠ celková_váha_slova
FROM slovo, rejstřík_subjektu
WHERE slovo.id_slovo = rejstřík_subjektu.id_slovo
AND slovo IN ('xxx','yyy')
GROUP BY rejstřík_subjektu.id_subjekt, rejstřík_subjektu.id_slovo
) rs
GROUP BY rejstřík_subjektu.id_subjekt
ORDER BY celková_váha_slova DESC


ale databáze mi hlásí chybu
column "subjekt.id_subjekt" must appear in thé GROUP BY clause or be used in an aggregate function

Máte nějaké návrhy, jak dotaz změnit?
Kajman_
Profil *
Možná by stačilo...

GROUP BY rejstřík_subjektu.id_subjekt, subjekt.id_subjekt
luax
Profil
to jsem samozrejme zkousel hned jako prvni, ale pak to zase vyhodi hlasku
ERROR: column "subjekt.nazev" must appear in the GROUP BY clause or be used in an aggregate function

kdyz tam pridam jeste group by subjekt.nazev, tak mam zase hlasku
ERROR: column "subjekt.popis_cinnosti" must appear in the GROUP BY clause or be used in an aggregate function atd.

zkratka to chce group by podle id_subjekt, název, popis_činnosti, celková_váha_slova, pak mi ten dotaz vrati nejaka data, ale spatna..

Nelze ta data ziskat jinym dotazem?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0