Página 1 de 1

Tema: 58. Id Pregunta: 1753.

Publicado: 11 May 2015, 12:53
por mjlpbfgpgr
8) Señale la falsa:
Tema: 58. Id Pregunta: 1753.
a) UPDATE es una sentencia de manipulación de datos
b) DROP es una sentencia de definición de datos
c) No se puede incluir una clausula HAVING sin utilizar previamente GRUOP BY
d) El resultado de un SELECT no tiene porqué ser una tabla

da como solución la d), ¿es correcta?
Yo creo que la c) es falsa porque se puede usar HAVING con o sin GROUP BY y con respecto a la d) no creo que el resultado de una SELECT sea siempre una tabla
Gracias. Saludos

Re: Tema: 58. Id Pregunta: 1753.

Publicado: 11 May 2015, 15:50
por kEko
Estoy de acuerdo contigo mjlpbfgpgr.

Aunque en la clausula HAVING solamente se permiten funciones agregadas, no necesariamente tienen que agruparse mediante un GROUP BY (por ejemplo en un count(*) )

Yo marcaría la d)

Un saludo

Re: Tema: 58. Id Pregunta: 1753.

Publicado: 11 May 2015, 15:55
por Salvatore
Yo he estado buscando para asegurarme y se puede incluir un having sin haber usado el group by (https://technet.microsoft.com/es-es/lib ... 05%29.aspx). Por tanto la correcta sería la c no?? ya que la pregunta indica cual es la falsa....La "d" es correcta ya que puede ser el resultado un numero como resultado de un count(*)

c) No se puede incluir una clausula HAVING sin utilizar previamente GRUOP BY (ESTO ES FALSO NO??)

Re: Tema: 58. Id Pregunta: 1753.

Publicado: 11 May 2015, 17:10
por vfrades
Lo normal al usar HAVING es que se use junto a GROUP BY. Si no hay GROUP BY, el HAVING se comporta como un WHERE. Puede que este uso de HAVING no sea muy útil, pero es lícito. Por lo tanto, esa es la falsa.

El resultado de SELECT siempre es una tabla, y como tal puede usarse dentro de una cláusula FROM.

Re: Tema: 58. Id Pregunta: 1753.

Publicado: 11 May 2015, 17:16
por Salvatore
vfrades escribió:Lo normal al usar HAVING es que se use junto a GROUP BY. Si no hay GROUP BY, el HAVING se comporta como un WHERE. Puede que este uso de HAVING no sea muy útil, pero es lícito. Por lo tanto, esa es la falsa.

El resultado de SELECT siempre es una tabla, y como tal puede usarse dentro de una cláusula FROM.
Perdona vfrades pero entonces no entiendo bien tu respuesta. EStoy de acuerdo contigo en la primera parte pero si dices que el resultado del select siempre es una tabla, para ti la respuesta correcta es la "d"??.. me estoy confundiendo ?? :lol:
Saludos, y a ver si llegamos a una solucion

Re: Tema: 58. Id Pregunta: 1753.

Publicado: 12 May 2015, 09:18
por mjlpbfgpgr
Hola
Gracias a todos por vuestras aportaciones
He leído por ahí que el resultado de una select siempre es una tabla lógica, aunque yo no estoy de acuerdo, porque, por ejemplo, de una select en la que se pida una sola columna y se de la PK en el where, se obtiene un único valor, pero incluso dando por buena la "d" como respuesta falsa, sigo pensando que la "c" también es falsa
He intentado ir a la fuente y ver la especificación ISO 9075, pero es de pago y no la encuentro gratis por ningún sitio. Digo esto porque a lo mejor la ISO coincide con lo que se dice en esta pregunta y el hecho de poder usar HAVING sin "GROUP BY" es una extensión de los SGBD comerciales o algo así

Gracias de nuevo. Saludos

Re: Tema: 58. Id Pregunta: 1753.

Publicado: 12 May 2015, 13:30
por chuchurri0
Hola, yo tampoco conozco el estándar, pero según la "Regla 1 de Codd: la regla de la información, toda la información en la base de datos es representada unidireccionalmente, por valores en posiciones de las columnas dentro de filas de tablas. Toda la información en una base de datos relacional se representa explícitamente en el nivel lógico exactamente de una manera: con valores en tablas." Aunque el resultado sea un único valor, será una tabla con una única tabla y una única columna.

Ya sé que para que una base de datos sea relacional no tiene por qué cumplir todas las reglas, y sin conocer el estándar al dedillo no puedo afirmar nada al 100%, pero es probable que sea así. (Y sé que la probabilidad cuando estás estudiando no convence mucho, pero es lo mejor que te puedo decir).

Re: Tema: 58. Id Pregunta: 1753.

Publicado: 12 May 2015, 20:53
por vfrades
Desde luego, la respuesta c) es la que es claramente falsa. Lo de la d) sería más discutible. Lo que dice el estándar es que el resultado de un SELECT es un "conjunto resultado" (o "result set") que ciertamente no es lo mismo que una tabla (no se puede hacer UPDATE/DELETE/INSERT, no se puede añadir columnas, etc). Siendo rigurosos, la única afirmación falsa es la c).