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

Como extrarr datos de una tabla que no existan en otra tabla

Estas en el tema de Como extrarr datos de una tabla que no existan en otra tabla en el foro de Mysql en Foros del Web. Hola a todos Bueno el titulo lo dice todo. mi problema es el siguiente, tengo dos tablas, QV y TIB. la tabla QV tiene datos ...
  #1 (permalink)  
Antiguo 27/04/2009, 04:08
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 15 años, 6 meses
Puntos: 3
Como extrarr datos de una tabla que no existan en otra tabla

Hola a todos

Bueno el titulo lo dice todo.

mi problema es el siguiente, tengo dos tablas, QV y TIB. la tabla QV tiene datos que en TIB ya existen, y yo lo que quisiera hacer es sacar los datos de QV que no existan en TIB.

las dos tablas tienen el mismo numero de campos y el mismo nombre
Nid (clave primaria)
Clients (text)

gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 27/04/2009, 06:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como extrarr datos de una tabla que no existan en otra tabla

Que tal Fantasma

Prueba con:

Código mysql:
Ver original
  1. select *from QV where Nid not in(select Nid from TIB);

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 27/04/2009, 07:14
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Como extrarr datos de una tabla que no existan en otra tabla



Muchisimas gracias

ya me estaba comiendo hasta los dedos ^^
  #4 (permalink)  
Antiguo 28/04/2009, 02:38
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Como extrarr datos de una tabla que no existan en otra tabla

Tengo un problema con la query, la probe con dos tablas y me funciono a la perfeccion.

la estoy probando con otras dos, pero el pc se me queda bloqueado, no puedo ni parar el proceso . Lo raro es que las primeras tablas con la que la query me funcionaba tenian muchiiiiissssimos mas datos que estas dos ultimas.

No abra alguna otra manera de hacerlo (otra query o algo)

gracias de antemano
  #5 (permalink)  
Antiguo 28/04/2009, 02:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Como extrarr datos de una tabla que no existan en otra tabla

He pensado que la relación es por el campo clients... Si no fuera así, tendrías que escribir en el ON los campos que tiene datos comunes.
Esta consulta, si tienes además indexado el campo que es FK, será muy rápida
Código sql:
Ver original
  1. SELECT QV.Nid, QV.clients FROM QV LEFT JOIN TIB ON QV.clients = TIB.clients WHERE TIB.clients IS NULL
  #6 (permalink)  
Antiguo 28/04/2009, 03:13
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Como extrarr datos de una tabla que no existan en otra tabla

No entiendo muy bien la query..

pero me funciona muy bien..

me la puedes explicar ??

gracias
  #7 (permalink)  
Antiguo 28/04/2009, 03:33
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Como extrarr datos de una tabla que no existan en otra tabla

es normal que cuando cambio la tabla de MyISAM a InnoDB se me añadan paginas "vacias" ???
  #8 (permalink)  
Antiguo 28/04/2009, 06:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Como extrarr datos de una tabla que no existan en otra tabla

La query es sencillamente un cruce left join donde pongo a la izquierda (la primera) la tabla de la que quiero encontrar sus ausencias en la segunda tabla.Ej.
TIB
Nid|Clients
1|Juan
2|Pedro
3|Luis

QV
1|Fernando
2|Luis
3|Juan

El cruce LEFT JOIN ... ON TIB.clients = QV.clients sin where devolvería algo así:
TIB.clients|QV.clients
Juan-Juan
Pedro-NULL
Luis-Luis

y si buscas, haces un select TIB.clients... where QV.clients IS NULL, sólo te mostrará Pedro del registro que se cruza en segundo lugar.
Esa es la idea. No sé si me habré explicado bien.
Respecto a tu otra pregunta, te diré que no nos dices cómo has hecho el paso de un motor a otro, algo que hay que hacer con mucho cuidado y en un determinado orden si hay relaciones de por medio. Dinos cómo haces el cambio y qué tablas tienes, cómo se relacionan, etc. ¿Qué significan "páginas vacías"?, te refieres en el navegador, es decir, en el html, o son los campos los que quedan en blanco... Debes aclararnos más la cosa.

Última edición por jurena; 28/04/2009 a las 06:12
  #9 (permalink)  
Antiguo 28/04/2009, 07:04
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Como extrarr datos de una tabla que no existan en otra tabla

Muchas gracias por la explicacion.

Por lo del motor: el cambio lo hago manualmente (desde phpmyadmin, en operaciones, opciones para esta tabla (lo tengo en frances no se si esta escrito asi en español :$)

no hay relaciones.
y lo de las paginas vacias sucede cuando muestro el contenido de una tabla (InnoDB en el phpmyadmin) donde pone "PAGINA N°". (con el motor MyISAM muestra las paginas exactas pero con InnoDB no) espero haberme explicado bien


**no hay campos vacios ni nada por el estilo, (en la pagina html no hay ninguna alteracion tampoco) lo unico que en el phpmyadmin, pues como que me muestra paginas de mas.

gracias
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 21:09.