Bases de Datos > PostgreSQL
Como combinar dos consultas sin perder filas
codeforall:
Hola,
He hecho dos consultas que funcionan. Una da como resultado 10 filas y la otra 8 filas. Las dos consultas las hago sobre tres tablas, como ejemplo sera asi:
consulta 1: tabla A y B : resultado 10 filas
consulta 2: tabla A y C : resultado 8 filas
Se que existe lo de INNER JOIN Y OUTER JOIN pero he probado y el resultado solo me salen 3 filas cuando yo quiero que esten las 10 filas.
¿Cómo puedo hacerlo?
ProfesorX:
Me temo que con la informacion que pones no es posible ayudarte ya que no pones ni la consulta, ni la estructura de tu base de datos, ni que resultado esperas obtener, solo dices que obtienes 3 filas de 10, pero sin mas informacion no se puede saber que necesitas, debes ser mas explicito
codeforall:
Hola,
He estado buscando más información y creo que se trata de una anidación de consultas, aunque no estoy seguro por que creo que anidar consultas es que el resultado de una sirva para la otra.
La consulta que tengo que conseguir es la relacion de todos los palacios(son de exposiciones) indicando el numero de stands que tiene i el numero de personas que se le han asignado i incorporado en algun momento. tiene que estar ordenado por el codigo del palacio y la ciudad
Te muestro la estructura:
ENTIDADES
Palacios(Codigo, Ubicacion, Importancia) "La ubicacion =la ciudad"
Estands(Palacio, Num_estand, tamaño)
{Palacio} clave foranea de Palacios
INTERERELACIONES
Asignan (Palacio, DNI, faena)
{Palacio} clave foranea de Palacios
Incorporan(Feria, convocatoria, DNI, Palacio, Estand, Turno)
{Palau, Estand} clave foranea de Estands
Consulta que muestra codigo, ciudad y nº de estands
--- Código: ---SELECT codo, ubicacion, COUNT (palacio) AS num_estands
FROM palacios, estands
WHERE palacios.codigo = estands.palacio
GROUP BY codigo, ubicacio
ORDER BY num_estands
--- Fin del código ---
Consulta que muestra las personas asignadas
--- Código: ---SELECT codigo,
COUNT (asignan.palacio) AS personas_asignadas
FROM palacios
LEFT OUTER JOIN asignan ON palacios.codigo = asignan.palacio
GROUP BY codigo
--- Fin del código ---
Consulta que muestra las personas incorporadas
--- Código: ---SELECT codigo,
COUNT (incorporan.palacio) AS personas_incorporadas
FROM palacios
LEFT OUTER JOIN incorporan ON palacios.codigo = incorporan.palacio
GROUP BY codigo
--- Fin del código ---
Como puedes ver por separado las tengo hechas pero aun no logro que el resultado este en una unica tabla. No manejo bien las consultas multiples.
Saludos y gracias
DiabloRojo:
Ya probaste consulta1{A,B} LEFT JOIN consulta2{A,C}??
codeforall:
Hola,
Pues eso nunca lo habia hecho, lo he provado pero me parece que me falta mucha practica por que
me estoy viendo todos los errores; no lo consigo.
Saludos
Navegación
[#] Página Siguiente
Ir a la versión completa