Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema con select dentro de delete

Estas en el tema de problema con select dentro de delete en el foro de PHP en Foros del Web. hola, quisiera saber si alguien puede ayudarme con esta query que no logro hacer funcionar! tengo 2 tablas: grupos id_grupo=30 nombregrupo=s contactos nombre=juan grupo=s necesito ...
  #1 (permalink)  
Antiguo 23/05/2016, 19:44
 
Fecha de Ingreso: junio-2011
Ubicación: uruguay
Mensajes: 42
Antigüedad: 12 años, 10 meses
Puntos: 0
problema con select dentro de delete

hola, quisiera saber si alguien puede ayudarme con esta query que no logro hacer funcionar!

tengo 2 tablas:

grupos
id_grupo=30
nombregrupo=s

contactos
nombre=juan
grupo=s

necesito ELIMINAR el grupo a partir de un ID (hasta aquí bien), pero SIEMPRE que NO tenga contactos en él.

Arme esto pero no funciona:

delete from grupos where id_grupo=30 and (select count(*) as id from contactos co inner join grupos c on co.grupo=c.nombregrupo where c.id_grupo=30) = 0


graciasss
por favor mover el tema a mysql :)

Última edición por gmyb; 23/05/2016 a las 21:24
  #2 (permalink)  
Antiguo 23/05/2016, 21:34
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: problema con select dentro de delete

no he probado tu consulta pero cre que tu problema esta en el asterisco del select:

prueba asi a ver (Como dije no la he probado):
Código PHP:
Ver original
  1. DELETE FROM grupos WHERE id_grupo NOT IN (SELECT id_grupo FROM contactos WHERE id_grupo = 30)
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 23/05/2016, 21:50
 
Fecha de Ingreso: junio-2011
Ubicación: uruguay
Mensajes: 42
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: problema con select dentro de delete

Cita:
Iniciado por xfxstudios Ver Mensaje
no he probado tu consulta pero cre que tu problema esta en el asterisco del select:

prueba asi a ver (Como dije no la he probado):
Código PHP:
Ver original
  1. DELETE FROM grupos WHERE id_grupo NOT IN (SELECT id_grupo FROM contactos WHERE id_grupo = 30)
Gracias!

Pero en ese caso me borra todos los grupos que no sean el id que tengo, yo quiero que borre el grupo del ID, solamente si tiene contactos asociados.
  #4 (permalink)  
Antiguo 23/05/2016, 22:18
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: problema con select dentro de delete

eso es lo que hace exactamente si lees bien la consulta:

DELETE FROM grupos : Elimina los grupos

WHERE id_grupo : cuya id de grupo

NOT IN : no este en la siguiente consulta

(SELECT id_grupo FROM contactos WHERE id_grupo = 30): Aqui consultamos si hay usuario cuyo grupo sea el id 30, en caso de no haber, eliminamos el grupo cuya id sea 30, en caso de haber contactos asociados al id 30, no elimina el grupo
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 23/05/2016, 22:27
 
Fecha de Ingreso: junio-2011
Ubicación: uruguay
Mensajes: 42
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: problema con select dentro de delete

ok muchas gracias!

También he llegado al siguiente código que funciona correctamente:

DELETE
grupos
FROM grupos
LEFT JOIN contactos
ON contactos.grupo = grupos.nombregrupo
WHERE grupos.id_grupo = 30
AND contactos.grupo IS NULL

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:55.