elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Seleccionar datos únicos, comparar con otra base, dos consultas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Seleccionar datos únicos, comparar con otra base, dos consultas  (Leído 18,203 veces)
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Seleccionar datos únicos, comparar con otra base, dos consultas
« en: 14 Diciembre 2009, 19:41 pm »

Hola,

Tengo el siguiente problema..

Tengo 7 bases de datos, con datos del 1 al 1200, 1200 al 2300 y así.. son consecutivos pero están partidos  :xD bueno, me pasaron una base de datos concentrada con todas las filas que supuestamente están (o deberían estar en las mini bases).

La primer consulta es cómo puedo seleccionar las filas donde un entero sea diferente, digamos que tengo un numero en un campo y necesito sacar los número únicos de la base de datos concentrada.

La segunda es como puedo obtener las filas que NO estén en las mini bases pero que estén en la base de datos concentrada (ya únicas).

Es en Mysql.

Gracias de antemano,

Alfonso.


En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Seleccionar datos únicos, comparar con otra base, dos consultas
« Respuesta #1 en: 14 Diciembre 2009, 19:47 pm »

Bueno, ya resolví la primera con DISTINCT jeje  ;D


En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Seleccionar datos únicos, comparar con otra base, dos consultas
« Respuesta #2 en: 14 Diciembre 2009, 19:59 pm »

a ver si te sirve esto, metes todos los registros en una base de datos llamada "completa", o sea, ahí metes las partes de la base de datos, entonces haces

Código
  1. CREATE TABLE `base_sin_duplicados` AS SELECT * FROM `completa` GROUP BY (id)

donde "id" es el identificador único, o tal vez entendi mal?
En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Seleccionar datos únicos, comparar con otra base, dos consultas
« Respuesta #3 en: 14 Diciembre 2009, 20:09 pm »

Sí, sí funcionaría pero los IDs no están continuos, no puedo meterlos por IDs xD, por ejemplo, se me ocurrió como hacerlo en PHP..

por cada registro en la base de datos completa (ya filtrada){

        hago consulta a la primer mini base y comparo con el que tengo en el row del pimer for.. si no esta me sigo a la segunda hasta que llegue a la 7.
       
       si no la encuentro inserto en la nueva base de datos

                 }

Algo así tendría que ser..  :-\
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Seleccionar datos únicos, comparar con otra base, dos consultas
« Respuesta #4 en: 14 Diciembre 2009, 20:23 pm »

Vamos a ver lo que yo entiendo tu tienes 2 tablas por ejemplo, y tu quieres obtener los registros de 1 tabla pero que no aparezcan en la otra???? porque si fuera el caso seria algo asi:

Código
  1.  
  2. mysql> SELECT * FROM prueba;
  3. +----------+---------+
  4. | numerito | datitos |
  5. +----------+---------+
  6. |        1 |       1 |
  7. |        1 |       2 |
  8. |        4 |       1 |
  9. |        4 |       3 |
  10. +----------+---------+
  11. 4 ROWS IN SET (0.00 sec)
  12.  
  13. mysql> SELECT * FROM ejemplo;
  14. +--------+-------+
  15. | numero | datos |
  16. +--------+-------+
  17. |      1 |     1 |
  18. |      2 |     2 |
  19. |      3 |     3 |
  20. |      4 |     4 |
  21. |      5 |     5 |
  22. +--------+-------+
  23. 5 ROWS IN SET (0.00 sec)
  24.  
  25.  
  26. mysql> SELECT ejemplo.numero FROM ejemplo WHERE ejemplo.datos NOT IN( SELECT num
  27. erito FROM prueba );
  28. +--------+
  29. | numero |
  30. +--------+
  31. |      2 |
  32. |      3 |
  33. |      5 |
  34. +--------+
  35. 3 ROWS IN SET (0.02 sec)
  36.  
  37.  
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Seleccionar datos únicos, comparar con otra base, dos consultas
« Respuesta #5 en: 15 Diciembre 2009, 01:05 am »

Con el ejemplo anterior te sirve, aunque la demostracion sea solo con 2 tablas. Cree 6 tables (En tu caso son 7) aunque desconozco en su totalidad que tipo de estructura poseen tus tablas, me imagino si es que tienen alguna relacion las 7 que deben tener 1 o mas campos donde concuerden siempre y asi poder retornar las consultas que macheen. En tu caso quieres todos los registros de una tabla particular donde dicho registro no exista o se repita en las otras 6 tablas. No es complicado mira otro ejemplo pero con mas de 2 tablas.

Código
  1.  
  2. mysql> SELECT * FROM ejemplo;
  3. +--------+-------+--------+
  4. | numero | datos | indice |
  5. +--------+-------+--------+
  6. |      1 |     1 |      1 |
  7. |      2 |     2 |      1 |
  8. |      3 |     3 |      1 |
  9. |      4 |     4 |      1 |
  10. |      5 |     5 |      1 |
  11. |      6 |     6 |      1 |
  12. |      7 |     7 |      1 |
  13. |      8 |     8 |      1 |
  14. |      9 |     9 |      1 |
  15. |     10 |    10 |      1 |
  16. |     11 |    11 |      1 |
  17. |     12 |    12 |      1 |
  18. |     13 |    13 |      1 |
  19. |     14 |    14 |      1 |
  20. +--------+-------+--------+
  21. 14 ROWS IN SET (0.00 sec)
  22.  
  23. mysql> SELECT * FROM prueba;
  24. +------+                    
  25. | fid  |
  26. +------+
  27. |    1 |
  28. |    1 |
  29. |    5 |
  30. +------+
  31. 3 ROWS IN SET (0.00 sec)
  32.  
  33. mysql> SELECT * FROM pruebax;
  34. +------+
  35. | id   |
  36. +------+
  37. |    1 |
  38. |    2 |
  39. |    5 |
  40. +------+
  41. 3 ROWS IN SET (0.00 sec)
  42.  
  43. mysql> SELECT * FROM pruebaxx;
  44. +------+
  45. | xid  |
  46. +------+
  47. |    4 |
  48. |    5 |
  49. |    6 |
  50. +------+
  51. 3 ROWS IN SET (0.00 sec)
  52.  
  53.  
  54.  
  55. mysql> SELECT * FROM pruebita;
  56. +------+                      
  57. | kid  |                      
  58. +------+
  59. |    4 |
  60. |    7 |
  61. |    8 |
  62. +------+
  63. 3 ROWS IN SET (0.00 sec)
  64.  
  65.  

Por ende tengo 6 tablas, y los datos que me interesan son los de la tabla ejemplo precisamente la fila numeros  que no concuerden con ningun campo de las demas tabls entonces:

Código
  1.  
  2. mysql> SELECT ejemplo.numero FROM ejemplo WHERE ejemplo.datos NOT IN( SELECT fid FROM prueba ) AND ejemplo.datos NOT IN( SELECT id FROM pruebax) AND ejemplo.datos NOT IN( SELECT xid FROM pruebaxx ) AND ejemplo.datos NOT IN( SELECT kid FROM pruebita ) AND ejemplo.indice = 1;
  3. +--------+
  4. | numero |
  5. +--------+
  6. |      3 |
  7. |      9 |
  8. |     10 |
  9. |     11 |
  10. |     12 |
  11. |     13 |
  12. |     14 |
  13. +--------+
  14. 7 ROWS IN SET (0.00 sec)
  15.  
  16.  

Analiza bien los registros de las tablas posteadas y comparalos a los registros de otras tablas, veras que solo aparecen aquellos numeros que no se reflejan en ninguna de las 6 tablas solicitadas.
En línea

sempus
Dakishimetai no ni...
Colaborador
***
Desconectado Desconectado

Mensajes: 2.391


GJDAM 愛している


Ver Perfil
Re: Seleccionar datos únicos, comparar con otra base, dos consultas
« Respuesta #6 en: 15 Diciembre 2009, 16:51 pm »


дٳŦ٭ depende si estamos hablando de datos de una tabla padre, porque en un tabla padre los datos practicamente no se repiten y no me refiero puramente al ID, pero si es una tabla Muchos, los datos se repiten y como sabras, aunque filtres por una subconsulta como lo hace ^TiFa^ el resultado seria erroneo, porque supon que tiene un codigo X en la tabla muchos, tal y como lo hace ^TiFa^ con una vez que aparezca el codigo X se jode el resultado, porque abria que ver cuantas veces deberia de estar dicho codigo X en tu tabla completa y tantas veces deberia de estar en las tablas separadas que tienes y que los datos sean identicos y suponiendo que sean resultados numericos, la suma deberia ser la misma, por eso, yo antes de intentar dar una solucion desearia que nos aclaremos el panorama que tienes con tus tablas y asi intentar ayudarte

o todo se rige por el correlativo? o podria ser que el correlativo de una no concuerde con la que esta completa?, o al concordar supuestamente estarian bien los datos? y solo buscariamos los correlativos faltantes?
En línea

...si la tuviera detendría el tiempo para verla como lo hago en este momento y seria feliz eternamente...
Descarga openSUSE
^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Seleccionar datos únicos, comparar con otra base, dos consultas
« Respuesta #7 en: 15 Diciembre 2009, 17:53 pm »

Sempus, aunque tu teoria es valida. Yo me guie de esto para poder deducir el modelo de las tablas ejemplos que expuse:

Citar
Tengo 7 bases de datos, con datos del 1 al 1200, 1200 al 2300 y así.. son consecutivos pero están partidos

El dice que son todos los datos son consecutivos pero divididos entre las 7 tablas.

Luego expone:

Citar
La segunda es como puedo obtener las filas que NO estén en las mini bases pero que estén en la base de datos concentrada (ya únicas).

Basandome en lo que el peticiona, 'datos unicos' estoy pensando que no se refiere a datos repetidos y en caso que sean repetidos (relacion de a muchos) deberian obviarse porque ya no son unicos sino que son repetidos.

A lo mejor interprete mal, pero me he guiado de valores consecutivos divididos entre varias tablas, y obtenet datos unicos en la tabla padre que no se repitan en la tablas hijos, y como la tabla padre asumo tiene valores 'unicos' (si esta bien modelado y estructurado el asunto) que se repitan los mismos valores en hijos deberia obviarse y no retornarse en la consulta... o al menos eso he entendido yo por su peticion de datos unicos que aparezcan en la tabla padre y que no matcheen o concuerden en las tablas hijos.
En línea

sempus
Dakishimetai no ni...
Colaborador
***
Desconectado Desconectado

Mensajes: 2.391


GJDAM 愛している


Ver Perfil
Re: Seleccionar datos únicos, comparar con otra base, dos consultas
« Respuesta #8 en: 15 Diciembre 2009, 18:12 pm »

nose, yo lo decia mas bien por otro lado xD , osea como que el numero de factura sea 0001, y evalues simplemente que esa factura exista en las tablas separadas, pero que exista no quiere decir que sea la misma porque el valor puede ser distinto asi como la Serie de la factura, mas bien por ese lado iba yo, aunque si tu y el recalcan el unico entonces supongo que ya no desea Reevaluar, mas bien yo lo decia por el lado de la Reevaluacion y lo digo porque el dice que la tabla completa esta unica (que entendi no la hizo el sino que se la dieron), pero no asi las separadas y que el separo con DISTINCT, y si fuese por ejemplo como el caso de una factura, ese DISTINCT me podria mentir, no lo he dicho por contradecirte ^TiFa^   :-*
En línea

...si la tuviera detendría el tiempo para verla como lo hago en este momento y seria feliz eternamente...
Descarga openSUSE
^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Seleccionar datos únicos, comparar con otra base, dos consultas
« Respuesta #9 en: 15 Diciembre 2009, 18:18 pm »

No chico como crees  :D  entiendo tu punto completamente, porque es valido... pero puestos que el dijo pidio eso desde un principio 'datos unicos que no se reflejen en las demas tablas' supuse lo que supuse....

Porque si fuese por lo que comentas (Que existe de hecho ese estructurado y es valido) entonces, su peticion ya no seria querer datos unicos de la tabla padre que no aparezcan en las demas tablas hijos.

Todo depende lo que el exponga, porque me he basado en una peticion vaga he deducido en base a esa peticion, pero si viera al menos ejemplo o modelo de las tablas, podria deducir de mejor manera realmente que es lo que el desea obtener.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
actualizacion de datos con index FOREIGN KEY, (consultas)
PHP
DJmixmancar 0 2,077 Último mensaje 5 Diciembre 2010, 08:05 am
por DJmixmancar
Dos Consultas una de VLC y otra de...
Software
Bender-Deicide 1 1,694 Último mensaje 31 Diciembre 2010, 21:33 pm
por RyogiShiki
Cómo Seleccionar un dato si existe en otra tabla?
Bases de Datos
WHK 4 6,363 Último mensaje 26 Agosto 2013, 17:56 pm
por 1mpuls0
selecciónar imágenes y almacenar en una base de datos
Programación Visual Basic
iamdevatamer@gmail.com 3 1,855 Último mensaje 30 Julio 2015, 19:04 pm
por 79137913
[Pregunta]: Consultas periódicas a una base de datos con PHP.
PHP
Leguim 6 6,614 Último mensaje 25 Mayo 2021, 04:36 am
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines