logo

WikiJuanan: ConsultasCursoSQL ...

Inicio | Indice De Paginas | Ultimas Modificaciones | Ultimos Commentarios | Usuarios | Registrarse | Conectar:  Contraseña:  

SQLCurso SQL?Mis Cursos


INSERT INTO tabla_destino (SELECT * FROM tabla_origen WHERE condiciones)

UPDATE table SET columna1=valor1, columna2=valor2 WHERE condiciones


DELETE FROM table WHERE condiciones - Es aconsejable hacer antes un SELECT para ver que registros borramos


DELETE FROM table - Borra la tabla entera!!!


SELECT * FROM table WHERE campo IN (valor1, valor2, valor3)


SELECT * FROM table1 WHERE campo1 IN (SELECT campo2 FROM table2)


SELECT columna1, función_agregada(columna2) FROM table GROUP BY columna1 HAVING funcion_agregada(columna2) condición

Update con funciones de tratamiento de cadenas

Cambiamos el formato y el orden de una cadena
SELECT CONCAT(substring(fechapedido,7,2),'/',substring(fechapedido,5,2),'/',left(fechapedido,4)) FROM `pedido`


UPDATE pedido SET fechapedido=concat(substring(fechapedido,7,2),'/',substring(fechapedido,5,2),'/',left(fechapedido,4))


UPDATE pedido
SET fechaentrega2 = CONCAT(LEFT(fechaentrega,4),'-',
SUBSTRING(fechaentrega,5,2),'-',SUBSTRING(fechaentrega,7,2))
WHERE LENGTH(fechapedido) > 8

Consultas de unión internas

Clientes con pedidos con importe superior a 500 euros
SELECT cliente.nombrecompañía,pedido.cargo FROM cliente INNER JOIN pedido ON cliente.idcliente=pedido.idcliente
WHERE pedido.cargo > 500 ORDER BY pedido.cargo DESC


Los empleados con sus jefes
SELECT concat(empleado.nombre,' ',empleado.apellidos) as 'nombre empleado',
concat(jefe.nombre,' ',jefe.apellidos) as 'nombre jefe'
FROM `empleado` left join empleado as jefe
on empleado.jefe=jefe.idempleado
order by 'nombre jefe'

Resolución de problemas

Nombre de la compañía que ha hecho el cargo más grande
Esta consulta no funciona porque “MAX” es una función agrupada y «nombrecompañía” no está agrupada:
SELECT nombrecompañía, MAX(cargo) FROM cliente,pedido
WHERE cliente.idcliente = pedido.idcliente


Esta sin funciona:
select nombrecompañía,cargo from pedido,cliente
where cliente.idcliente=pedido.idcliente
and cargo in (select max(cargo) from pedido)


Compañías que no han hecho compras en la primera mitad del año 98
SELECT nombrecompañía FROM cliente WHERE idcliente
NOT IN (SELECT idcliente FROM pedido
WHERE fechaentrega2
BETWEEN '1998–01–01' AND '1998–06–31')


Empleados que no han hecho ventas en la primera mitad del año 98
SELECT concat(nombre,' ')


año más alto de cada distribuidora
SELECT max(anio) as maximo,distribuidora.nombre from pelicula
inner join distribuidora on distribuidora.id_distribuidora = pelicula.id_distribuidora
group by distribuidora.nombre order by maximo desc

No hay archivos en esta página. [Enseñar archivos/formulario]
Comentarios [Esconder comentarios/formulario]