¿Cuál es el comportamiento esperado para múltiples funciones de retorno de conjuntos en la cláusula select?
Estoy tratando de obtener una "unión cruzada" con el resultado de dos funciones de retorno de conjuntos, pero en algunos casos no obtengo la "unión cruzada", ver ejemplo
Comportamiento 1: Cuando las longitudes de conjunto son las mismas, coincide con elemento por elemento de cada conjunto
postgres=# SELECT generate_series(1,3), generate_series(5,7) order by 1,2; generate_series | generate_series -----------------+----------------- 1 | 5 2 | 6 3 | 7 (3 rows)
Comportamiento 2: Cuando las longitudes de los conjuntos son diferentes, se "cruzan" en los conjuntos
postgres=# SELECT generate_series(1,2), generate_series(5,7) order by 1,2; generate_series | generate_series -----------------+----------------- 1 | 5 1 | 6 1 | 7 2 | 5 2 | 6 2 | 7 (6 rows)
Creo que no estoy entendiendo algo aquí, ¿alguien puede explicar el comportamiento esperado?
EDITAR: otro ejemplo, más extraño que el anterior
postgres=# SELECT generate_series(1,2) x, generate_series(1,4) y order by x,y; x | y ---+--- 1 | 1 1 | 3 2 | 2 2 | 4 (4 rows)
(NOTA: aceptaré la respuesta que responde la pregunta del título con un enlace a la documentación).