Código SQL:
Ver original
id | Nombre ------------- 1 | Nombre1 2 | Nombre2 3 | Nombre3
Código SQL:
Ver original
id_socio | Parcela --------------------- 1 |Parcela1 1 |Parcela2 2 |Parcela3 3 |Parcela4
Una selección por id del nombre e id_socio de la parcela me dará:
Código SQL:
Ver original
Nombre1 | Parcela1 Nombre1 | Parcela2 Nombre2 | Parcela3 Nombre3 | Parcela4
¿Es posible que la salida fuera así?
Código SQL:
Ver original
Nombre1 | Parcela1 | Parcela2 Nombre2 | Parcela3 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
SELECT nombre, string_agg(parcela, ', ') AS "Parcelas" FROM nombres, parcelas WHERE nombres.id=parcelas.id_socio GROUP BY nombre;
Y me da esta salida:
Código SQL:
Ver original
Nombre1 | Parcela1, Parcela2 Nombre2 | Parcela3 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