Я получил таблицы:PostgreSQL INSERT INTO в функции
Общие
CREATE TABLE general
(
equipo character varying(30) NOT NULL,
partidos_jug integer,
partidos_gana integer,
partidos_emp integer,
partidos_perd integer,
puntos integer,
goles_favor integer,
CONSTRAINT general_pkey PRIMARY KEY (equipo)
)
Equipos
create table equipos
(num_eqpo serial,
ciudad varchar (30),
num_gpo int,
nom_equipo varchar (30),
primary key (num_eqpo),
foreign key (num_gpo) references grupos (num_gpo))
Partidos
create table partidos
(semana int,
num_eqpo_loc int,
num_eqpo_vis int,
goles_loc int,
goles_vis int, primary key (semana,num_eqpo_loc,num_eqpo_vis),
foreign key (num_eqpo_loc) references equipos (num_eqpo),
foreign key (num_eqpo_vis) references equipos (num_eqpo))
Я хочу, чтобы скопировать некоторые данные из таблицы Equipos к таблице Ge нераля с помощью:
CREATE OR REPLACE FUNCTION sp_tablageneral() RETURNS void AS $$
DECLARE cont int:= (SELECT count(num_eqpo)FROM equipos);
BEGIN
while cont>0
LOOP
INSERT INTO general(equipo,partidos_jug)
SELECT nom_equipo, COUNT(*) FROM equipos E, partidos as P
WHERE E.num_eqpo = cont AND (P.num_eqpo_loc=cont OR P.num_eqpo_vis=cont);
cont:= cont - 1;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql;
Я имел эту функцию, отделенную в небольших блоках коды:
INSERT INTO general(equipo)
SELECT nom_equipo FROM equipos E
WHERE E.num_eqpo = 1;
SELECT COUNT(*) FROM partidos as P WHERE (P.num_eqpo_loc=1 OR P.num_eqpo_vis=1)
Я хочу, чтобы скопировать всю информацию из всех записей, а не только первый.
Используя эту функцию, я получаю эту ошибку:
ERROR: the "e.nom_equipo" column must appear in the GROUP BY clause or be used in an aggregate function
LINE 2: SELECT nom_equipo, COUNT (*) FROM equipos E, partid ...
^
Любую идею, почему появляется эта ошибка в этом простом запросе?
Большое спасибо!
Вы задал этот же вопрос два часа назад, и там был дан ответ. – Patrick