En el apartado b, la parte de: recibidas por el parque de bomberos Casa de campo tengo claro que se usa un sigma, pero me has puesto antes que hacer in pi cod_parque no tiene sentido, como se juntaria con la parte del apartado a? Sería con un joint pero entonces la tabla recibe no le vería sentido.
Código de todas las peticiones de servicio de gravedad 7 recibidas por el parque de bomberos “Casa de Campo”.
(Pi(CodParque) (Sigma Nombre = C.campo) (Parque) ∗ Recibe) ∩ (π (CodPeticion) Sigma (Grado = 7) (Peticiones)) ∗ Recibe)
Explicado con un ejemplo. Vamos a
suponer que los CodParque se forman con "Cpa" + 4 dígitos y los CodPeticion se forman con "CPe" + 4 dígitos.
Imagina que haces la primera parte de la intersección. Así obtienes el CodParque de los parques que se llamen C.campo y que hayan recibido alguna petición. Y los CodParque obtenidos son (por ejemplo):
Y ahora vamos a hacer la segunda parte de tu intersección. Con ello obtienes los CodPeticion de las peticiones de gravedad 7 y que han sido recibidas por algún parque. Y esto nos da como resultado los siguientes CodPeticion (por ejemplo):
CPe0005
CPe0008
CPe0010
CPe0015
Y tu solución es la intersección de ambos (cosa que te adelanto que no se puede hacer porque estás trabajando con campos diferentes CodParque por un lado y CodPeticion por otro... Pero supongamos que se puede hacer la intersección) que es: NADA. 0. Mejor dicho {Vacio}. No hay ninguna coincidencia entre una tabla y otra.
Hay dos formas de hacer esto:
(PI(CodPeticion)(SIGMA(Nombre = C.campo)(Parque) JOIN Recibe) INTERSECT (PI(CodPeticion)(SIGMA(gravedad = 7)(Peticion))
Empecemos por la premisa de que CodPeticion es un atributo/campo/columna identificativa/discriminante/clave (porque lleva #). Esto significa que cualquier petición se puede identificar con saber su CodPeticion o que no existen dos peticiones con el mismo CodPeticion.
La primera parte de la intersección obtiene los CodPeticion de todas las peticiones que haya recibido el parque C.campo. Por ejemplo, siguiendo con el ejemplo de antes:
Esos son los CodPeticion de todas las peticiones que han recibido los parques con nombre C.campo. Ahora de todos esos tenemos que ver los que tienen gravedad 7. Entonces con la segunda parte de la intersección obtenemos los CodPeticion de todas las peticiones con gravedad 7. Que son, por ejemplo:
Ahora si hacemos la intersección entre ambos resultados, obtenemos los CodPeticion de todas las peticiones de gravedad 7 que han recibido los parques C.campo.
Recalco que la JOIN entre Parque y Recibe se hace por medio de CodParque (campo que tienen ambas en común).
En este método no me voy a explayar tanto. La primera parte es igual (JOIN entre Parque y Recibe) pero lo que hacemos es otra JOIN de esas dos con Peticion (por medio de CodPeticion).
PI(Peticion.CodPeticion)(SIGMA(gravedad = 7)(Parque JOIN Recibe JOIN Peticion)
En el campo del PI hay que especificar una tabla, bien Recibe o bien Peticion porque ambas tienen el campo CodPeticion pero el resultado es el mismo ya que el CodPeticion tiene que coincidir en ambas.
Así tal cual esta consulta es peor porque trabaja con mayor cantidad de datos ya que hemos dejado los SIGMAs y PIs para el final pero eso hace que la consulta quede más simple.
Ahora ya papel y boli (o lo que prefieras) y a leer todos los mensajes de este tema con todos los ejemplos que he ido poniendo hasta entenderlo. Creo que ya tienes ejemplos y explicaciones de sobra.
