Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/10/2016, 05:15
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Es posible esta consulta desde Postgresql?

Hola, si tengo estas tablas:

Código SQL:
Ver original
  1. id | Nombre
  2. -------------
  3. 1  | Nombre1
  4. 2  | Nombre2
  5. 3  | Nombre3
Código SQL:
Ver original
  1. id_socio | Parcela
  2. ---------------------
  3. 1        |Parcela1
  4. 1        |Parcela2
  5. 2        |Parcela3
  6. 3        |Parcela4

Una selección por id del nombre e id_socio de la parcela me dará:

Código SQL:
Ver original
  1. Nombre1 | Parcela1
  2. Nombre1 | Parcela2
  3. Nombre2 | Parcela3
  4. Nombre3 | Parcela4

¿Es posible que la salida fuera así?

Código SQL:
Ver original
  1. Nombre1 | Parcela1
  2.         | Parcela2
  3. Nombre2 | Parcela3
  4. Nombre3 | Parcela4

Es que de esa forma sería menos lioso gestionar los datos para imprimirlos.
A la hora de imprimir yo consigo esa salida haciendo una consulta doble, es decir, recorriendo cada registro de la entrada de nombres, lo imprimo, le hago la consulta de las parcelas que tiene, las imprimo, y paso al siguiente registro de nombres.

Lo más cerca que he estado es haciendo una función de concatenación, algo así (en el ejemplo):
Código SQL:
Ver original
  1. SELECT nombre, string_agg(parcela, ', ') AS "Parcelas"
  2. FROM nombres, parcelas
  3. WHERE nombres.id=parcelas.id_socio
  4. GROUP BY nombre;

Y me da esta salida:
Código SQL:
Ver original
  1. Nombre1 | Parcela1, Parcela2
  2. Nombre2 | Parcela3
  3. Nombre3 | Parcela4

Puede ser que lo que esté diciendo sea una tontería, y obtener una tabla así para hacer una impresión no sea el camino lógico. Si es así, se aceptan criticas
__________________
Mi calculadora en Qt