lunes, 9 de mayo de 2016

diferencias where y having

No debemos confundir la cláusula "where" con la cláusula "having"; la primera establece condiciones para la selección de registros de un "select"; la segunda establece condiciones para la selección de registros de una salida "group by".

*********************************
Luego del "on" se especifican los campos que se asociarán; no se deben colocar condiciones en la parte "on" 
para restringir registros que deberían estar en el resultado, para ello hay que usar la cláusula "where".
*********************************
El restaurante quiere combinar los registros de ambas tablas para mostrar los distintos menúes que ofrece. Podemos usar "cross join":
 select c.*,p.*
  from comidas as c
  cross join postres as p;
es igual a un simple "join" sin parte "on":

 select c.*,p.*
  from comidas as c
  join postres as p;

Podemos organizar la salida del "cross join" para obtener el nombre del plato principal, del postre y el precio total de cada combinación (menú):
 select c.nombre,p.nombre,
  c.precio+p.precio as total
  from comidas as c
  cross join postres as p;

No hay comentarios:

Publicar un comentario