Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Crear registros comprobando antes si existen

Estas en el tema de Crear registros comprobando antes si existen en el foro de Mysql en Foros del Web. Buenos días, he podido solucionar mi problema con cantidad de whiles y consultas pero ando en busca de una solución más "elegante" y que no ...
  #1 (permalink)  
Antiguo 10/02/2014, 11:47
 
Fecha de Ingreso: marzo-2010
Mensajes: 90
Antigüedad: 14 años, 1 mes
Puntos: 2
Crear registros comprobando antes si existen

Buenos días, he podido solucionar mi problema con cantidad de whiles y consultas pero ando en busca de una solución más "elegante" y que no lance cientos de consultas a la base de datos.
Tengo una tabla "diccionario" con los campos:

id , clave , idioma, contenido.... //ejemplo:
1- entrar -- 1 ---- ENTRAR
2 - salir --- 1 ----- SALIR
3 - entrar - 2 ----- ENTER

Bien, la idea sería que la consulta comprobase que existiendo un idioma 2, este no tiene registro con campo: clave = salir y siempre que encuentre un caso como ese debería generar el campo con el idioma 2 y la clave que falta, en este caso salir(el contenido es indiferente pero en este caso lo dejaremos vacío)
La idea es que tras la consulta apareciese el registro:

4 - salir --- 2 ----- (vacío)

Gracias de antemano, saludos.

Última edición por molinillo; 10/02/2014 a las 11:53
  #2 (permalink)  
Antiguo 10/02/2014, 12:35
 
Fecha de Ingreso: febrero-2014
Mensajes: 3
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Crear registros comprobando antes si existen

Pon la consulta sql, de esa forma se ve mejor...
  #3 (permalink)  
Antiguo 10/02/2014, 13:01
 
Fecha de Ingreso: marzo-2010
Mensajes: 90
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Crear registros comprobando antes si existen

La consulta es lo que busco, te puedo poner como lo he solucionado yo , aunque ya aviso que es una guarrada , por eso busco algo con solo mysql que no tengan que hacer 3 bucles y que no tenga que lanzar una o dos consultas por registro
Código MySQL:
Ver original
  1. -- saco todos los idiomas menos el predeterminado
  2. SELECT id FROM idiomas WHERE id <> '1';
  3. -- selecciono todos los registros del idioma predeterminado
  4. SELECT * FROM diccionario WHERE idioma='1';
  5. --para cada registro comprobaremos que esté en todos los idiomas
  6. -- y ahora sabiendo la clave y el idioma veremos si existe
  7. SELECT * FROM diccionario WHERE idioma='".$filar['id']."' AND clave ='".$filav['clave']."' AND pagina ='".$filav['pagina']';
  8. --que no existe!!!! , lo creamos
  9. INSERT INTO diccionario (id,contenido,clave,idioma,pagina) VALUES ('','','".$filav['clave']."','".$filar['id']."','".$filav['pagina']."');

Cita:
Editado: Código de programación no permitido en foros de bases de datos. Leer las normas, por favor.

Última edición por gnzsoloyo; 10/02/2014 a las 13:22
  #4 (permalink)  
Antiguo 10/02/2014, 13:22
 
Fecha de Ingreso: febrero-2014
Mensajes: 3
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Crear registros comprobando antes si existen

No estoy muy seguro:

¿No puedes hacer un inner join y unir dos tablas?
¿El idoma y el id es mismo ?
¿No puedes poner en $queryz (una condicion más -> and idioma <> '1' ?

De todas formas no entendido el problema bien, esperemos que otro te puede ayudar.

Última edición por mical3; 14/01/2015 a las 11:07

Etiquetas: campo, campos, registro, tabla
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 15:29.