![]() |
Pequeño script Hola, Quiero desarrollar un pequeño script en php para automatizar una serie de consultas en sql, y no se muy bien como hacerlo. Voy a poner una tabla de ejemplo para que se entienda mejor. La tabla es coche y tiene los siguientes campos: - idcoche --> autonumérico - codigoCoche --> se calcula mediante una función random y debe ser único por cada coche - marcaCoche El problema es que hay coches con un mismo código, y quiero obtener el idCoche de los coches que tengan los mismos valores en el campo código. He realizado la siguiente consulta mysql: SELECT idCoche, count(*) as contador FROM coches GROUP BY idCoche Una vez obtengo el resultado de esta consulta, quiero hacer un update de la tabla de la siguiente forma: Si el contador es mayor que 1 --> ejecuta el update. El problema que tengo es que con un simple if, tengo que ejecutar el script tantas veces como códigos con valores repetidos haya. Y quiero hacer el update de golpe. He probado con for, while, do while... pero no hay forma. Alguien me ayuda? Muchas gracias |
Respuesta: Pequeño script usa en el while la condicion de que contador no sea mayor a 1 , osea contador <= 1... ahi deberia funcionar... lo otro útil.. es poner al campo codigocoche como un campo UNICO entonces no te dejara ingresar codigos repetidos.. si haces esto debes enfocar el script a que si te genera error al ingresar, te genere un nuevo codigocoche y asi hasta lograrlo.. quizas se te haga mas facil el iterar. Suerte :D |
Respuesta: Pequeño script Gracias por tu respuesta. Pero... el while tiene que ser contador > 1, creo. Ya que la primera consulta me devuelve contador mayor que 1 para aquellos coches con codigo repetido. Esa opción ya lo probé y no funciono. En cuanto a poner que codigo sea unico, también es una solución. Pero como esto no era así,hubo un error en el desarrollo de la aplicación que genera los códigos y ahora se ha de arreglar de alguna forma. Gracias de nuevo |
Respuesta: Pequeño script y si pones HAVING count(*) > 1 al final de: SELECT idCoche, count(*) as contador FROM coches GROUP BY idCoche y a los que te le haces UPDATE, cada vez que hagas un update aumentas en uno un auxiliar que inicias en 0; tonces hace un while que mientras el auxiliar sea distinto de cero se actualize .. no se si me explique bien, pero eso del auxiliar o flag sirve :D |
Respuesta: Pequeño script He probado lo del having y me retorna solo aquellos que el contador sea maro que uno. Guay! :) Pero... no entiendo la segunda parte de tu respuesta :pensando: Gracias! |
Respuesta: Pequeño script Si deseas hacer un update de todos los campos puedes usar el comando REPLACE que te permite insertar si no existe el valor y actualizar si el dato existe Saludos |
Respuesta: Pequeño script imaginemos esta tabla: Código PHP: la sentencia: SELECT `idcoche` , count( * ) AS contador FROM coches GROUP BY `codigo` eso arroja: Código PHP: en eso estamos claro... ahora ... lo que te digo es que uses un auxiliar asi: Código PHP: :si: |
| La zona horaria es GMT -6. Ahora son las 07:43. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.