¿Cómo fusionar registros de dos tablas usando grupo por cláusula en Oracle?
Frecuentes
Visto 10,122 veces
1
Tengo dos mesas ward1 y ward2ie;
create table ward1
(
ward_id int
)
create table ward2
(
ward_id int,
ward_name varchar(10)
)
y los valores son --
insert into ward1 values(101);
insert into ward1 values(101);
insert into ward1 values(102);
insert into ward1 values(102);
insert into ward1 values(102);
insert into ward2 values(101,'child');
insert into ward2 values(102,'General');
Entonces, necesito producir el número total de ocurrencias de ward_id. Fue simple para mí, usé este código.
SELECT ward_id, count(ward_id) as "No of occurrence" from ward1 group by ward_id;
la salida fue --
ward_id No of occurrence
101 2
102 3
estos son los registros de la tabla ward1, pero cuando quiero ward_name de la tabla ward2. Estoy recibiendo un error. Este es mi código--
select ward1.ward_id as "ward_id",ward2.ward_name,
count(ward1.ward_id)as "No of occurrence" from ward1,
ward2 group by ward1.ward_id,ward2.ward_name
having ward1.ward_id=ward2.ward_id;
Dice que no es un grupo por expresión...
Quiero mostrarme así--
ward_id ward_name No of occurrence
101 child 2
102 General 3
Por favor, ayuda ....
3 Respuestas
2
Cerca. Realmente solo necesita unir las 2 tablas en una cláusula where (o usar la declaración "join" preferida)
select ward1.ward_id as "ward_id",ward2.ward_name,
count(ward1.ward_id)as "No of occurrence"
from ward1,ward2
where ward1.ward_id = ward2.ward_id
group by ward1.ward_id,ward2.ward_name;
respondido 10 mar '12, 14:03
1
No quieres el HAVING
cláusula aquí, solo use un WHERE
cláusula para vincular sus tablas:
select ward1.ward_id as "ward_id",
ward2.ward_name,
count(ward1.ward_id) as "No of occurrence"
from ward1,
ward2
WHERE ward1.ward_id = ward2.ward_id
group by ward1.ward_id,
ward2.ward_name;
Realmente debería usar la sintaxis SQL-92 en lugar de SQL-86, luego solo necesita agregar el JOIN
condición:
select ward_id,
ward2.ward_name,
count(ward_id) as "No of occurrence"
from ward1
INNER JOIN ward2 USING (ward_id)
group by ward_id,
ward2.ward_name;
Espero que ayude ...
respondido 10 mar '12, 14:03
0
select ward1.ward_id as "ward_id",
ward2.ward_name,
count(ward1.ward_id) as "No of occurrence"
from ward1, ward2
where ward1.ward_id = ward2.ward_id
group by ward1.ward_id,ward2.ward_name;
respondido 10 mar '12, 14:03
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas oracle sqlplus or haz tu propia pregunta.
Oh, sí, eso estuvo cerca. Gracias. - ceniza dmc4