Update SQL

M

Buenas,

Estoy realizando un ejercicio, que a priori es muy fàcil, pero no acabo de sacarlo. Tengo las siguientes tablas con los datos ya puestos:

Tabla A: https://ibb.co/YRxpzRf

Tabla B: https://ibb.co/gzJsWvC

Tengo que actualizar el campo de la tabla A (numPelicules) con el número de pelis que ha hecho la actriz "Sharon Stone" en la tabla PARTICIPA (nomActor).

Entiendo que se hace con un update, pero no logro acabar de entender como seguir.

Tengo este codigo hecho:

UPDATE ACTOR
SET numPelicules = 2
WHERE nom = "Sharon Stone";

Pero el tema es que estoy introduciendo el 2 manualmente y lo que quiero es que lo saque automáticamente al contar las veces que participa la actriz en la otra tabla.

cabron

como sacas el valor de una tabla? con select
como actualizas el valor de una tabla? con update

pues usa update y select juntos

UPDATE Tabla
SET  columnatabla=(SELECT valor que vas a meter
                            FROM otra tabla
                            WHERE condicion para sacar el valor)
WHERE condicion para la fila a actualizar
1
M

Creo que lo he pillado un poco:

UPDATE ACTOR
SET Actor.numPelicules=(SELECT nomActor
FROM PARTICIPA
WHERE nomActor = "Sharon Stone"
WHERE condicion para la columna a actualizar

El ultimo WHERE no lo entiendo mucho ya que entiendo que la condicion ya esta dentro del select, no?

1 respuesta
cabron

#3

el primer where es para la condición del valor que vas a sacar de la tabla B, el segundo para que fila de la tabla A vas a actualizar, si no lo pones actualizarías todas las filas

1 respuesta
RaymaN

Para rizar el rizo, puedes hacer un join de varias tablas en un update o delete y la query será más eficiente.

M

#4 Algo asi:

UPDATE ACTOR
SET Actor.numPelicules=(SELECT count(nomActor) 
			FROM PARTICIPA 
			WHERE nomActor = "Sharon Stone")
WHERE Actor.nom = "Sharon Stone"
1 1 respuesta
cabron

#6

sí, de todas formas, no tienes una base de datos para probarlo? no es que sea muy difícil montarte una

1 respuesta
M

#7 Si, tengo un servidor mysql montado por la uni.

Lo acabo de probar y funciona perfectamente. Muchas gracias

M

¿Alguien sabe como sacar la palabra más larga de una columna?

He utilizado el MAX, pero creo que no acaba de coger caracteres como los puntos, los espacios etc.....

Necesito sacar la palabra mas larga de una columna y no se como hacerlo

Ranthas

En Oracle tienes la función LENGTH, que te da la longitud de una cadena; combinado con la función de agregado MAX tendrías el resultado.

Necesitas buscar el equivalente de LENGTH en el RDBMS que estés usando.

M

Lo acabo de sacar:

SELECT nomPelicula
FROM PARTICIPA
WHERE premi = NULL
ORDER BY LENGTH(nomPelicula) DESC
LIMIT 1;

1 respuesta
M

En el where, quiero poner la condicion que busque entre las peliculas que en la columna "premi" esten vacias.

Como se refleja esto en el where?

WHERE premi = NULL
WHERE premi = ""
WHERE premi LIKE "NULL"

No me acaba de salir

1 respuesta
Ranthas

#11 Eso está mal, ya que si hay más de una cadena con la misma longitud, te mostrará solo una de ellas. A no ser que no importe y simplemente quieras sacar una de las palabras con la mayor longitud.

#12 Para usar búsquedas con NULL en las clausulas WHERE, debes usar IS / IS NOT.

WHERE premi IS NULL (premi es nulo)
WHERE premi IS NOT NULL (premi no es nulo)

Y no te lo tomes a mal, pero deberías coger y aprender lo básico de SQL antes de venir aquí, porque vas de lado.

2 respuestas
M

#13 Como lo harias tu?

M

#13 No creo que vaya de lado la verdad.

Pero gracias por el consejo

1 respuesta
Ranthas

#15 Estás buscando nulos con LIKE "NULL", pero no vas de lado, controlas que da miedo.

En fin, aquí termina mi aportación. Hazte un favor y coge un libro, aquí no estamos para hacerte los deberes.

2 1 respuesta
M

#16 No veo tu aportacion por ningun lado.

Todavia la sigo buscando tete

1 respuesta
M

#17 te recomiendo que mientras estás empezando a programar en un lenguaje muy tipado como es SQL, tengas al lado siempre un cheat sheet del lenguaje para guiarte en cosas básicas como las que preguntas. Suelen venir con ejemplos sencillos y suelen ser una o dos páginas, por lo que es perfecto para ir revisando si algo no te sale como quieres.

Usuarios habituales