Posible impugnación. Pregunta 64 (Modelo A) / 80 (Modelo B) (LEFT OUTER JOIN)
Publicado: 21 May 2018, 22:29
La pregunta en cuestión es:
¿Cuántas tuplas devuelve una sentencia SQL del tipo "SELECT ... FROM Tabla1 LEFT OUTER JOIN Tabla2 ON ..."?
a. El número máximo entre las tuplas de Tabla1 y Tabla2.
b. Al menos el número de tuplas de Tabla1.
c. El número de tuplas que están en Tabla1 pero no en Tabla2.
d. El número de tuplas que, en el producto cartesiano de ambas tablas, cumplen una determinada condición.
Da por buena la (b), pero yo creo que es incorrecto. Al menos si entendemos que en los puntos suspensivos puede haber cualquier cosa.
Por ejemplo, si tenemos Tabla1 y Tabla2 relacionadas mediante los campos Tabla1.A <->Tabla2.B, y tenemos la columna Tabla1.C de tipo numérico, la consulta:
SELECT AVG(Tabla1.C) FROM Tabla1 LEFT OUTER JOIN Tabla2 ON Tabla1.A = Tabla2.B
que es del tipo de consulta que dice el enunciado, no daría como resultado "al menos el número de tuplas de Tabla1". El resultado sería únicamente un valor numérico.
Otro ejemplo. Con las mismas tablas de antes, la consulta:
SELECT Tabla1.* FROM Tabla1 LEFT OUTER JOIN Tabla2 ON Tabla1.A = Tabla2.B WHERE Tabla1.C<0
no tiene por qué dar como resultado al menos el número de tuplas de Tabla1.
El tema aquí está en los puntos suspensivos. Si se interpreta que en ellos puede haber cualquier cosa, la pregunta no tendría respuesta válida. ¿Cómo lo véis?
¿Cuántas tuplas devuelve una sentencia SQL del tipo "SELECT ... FROM Tabla1 LEFT OUTER JOIN Tabla2 ON ..."?
a. El número máximo entre las tuplas de Tabla1 y Tabla2.
b. Al menos el número de tuplas de Tabla1.
c. El número de tuplas que están en Tabla1 pero no en Tabla2.
d. El número de tuplas que, en el producto cartesiano de ambas tablas, cumplen una determinada condición.
Da por buena la (b), pero yo creo que es incorrecto. Al menos si entendemos que en los puntos suspensivos puede haber cualquier cosa.
Por ejemplo, si tenemos Tabla1 y Tabla2 relacionadas mediante los campos Tabla1.A <->Tabla2.B, y tenemos la columna Tabla1.C de tipo numérico, la consulta:
SELECT AVG(Tabla1.C) FROM Tabla1 LEFT OUTER JOIN Tabla2 ON Tabla1.A = Tabla2.B
que es del tipo de consulta que dice el enunciado, no daría como resultado "al menos el número de tuplas de Tabla1". El resultado sería únicamente un valor numérico.
Otro ejemplo. Con las mismas tablas de antes, la consulta:
SELECT Tabla1.* FROM Tabla1 LEFT OUTER JOIN Tabla2 ON Tabla1.A = Tabla2.B WHERE Tabla1.C<0
no tiene por qué dar como resultado al menos el número de tuplas de Tabla1.
El tema aquí está en los puntos suspensivos. Si se interpreta que en ellos puede haber cualquier cosa, la pregunta no tendría respuesta válida. ¿Cómo lo véis?