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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 [76] 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 ... 96
751  Programación / Bases de Datos / Re: Ayuda con indices en base de datos en: 26 Octubre 2009, 00:57 am
Si lo veo extremadamente necesario, sobretodo porque hoy son 18,500 registros y en semanas o meses podria ser el duplicado.

Si no tienes indices y buscas X dato en una tabla, es como si tuvieras un libro de 1,000 paginas con informacion de lado y lado por pagina, y yo te diga Skeletron buscame en el libro algo sobre 'tecnologia actual' y tu tengas que empezar hoja, por hoja, por hoja a buscarme (digamos que tu libro no tiene indice) sin embargo si tu libro tiene un indice delante que dice los temas y subtemas por paginas, no seria mas eficiente para ti y mas rapido y menos perdida de tiempo por lo menos saber que en la pagina X hay info sobre 'tecnologia actual' que ir hojeando hoja, por hoja, por hoja ???

Esto aplicalo a nivel de un programa en un PC, en este caso la base de datos, hace lo mismito, empieza a buscar la info en las tablas y esto es lectura del HD buscando un dato..... imaginate 20 usuarios a la vez buscando distintos datos en la misma tabla sin indices... y leyendo y leyendo en tu HD buscando ahi...

Como indice podria recomendarte un ID o algo similar, es que si te digo DIA o MES muchos registros podrian tener el mismo DIA y el mismo MES cuando tu solo quieres la info de 1 solo registro por ejemplo. Aun estas a tiempo de alterar la tabla y agregarle un campo ID por registro, y hacer un bucle en tu lenguaje que llene ese campo ID desde 1 hasta 18,500 para que asi cada registro tenga su correspondiente ID y te sea mas facil la busquedad con Indices
752  Programación / Bases de Datos / Re: Ayuda SQL DISTINCT en: 24 Octubre 2009, 20:47 pm
Me alegra que hayas podido resolver tu asunto, por lo visto yo entendi mal tu peticion, pensaba que eran todos los clientes unicos, y todas las ciudades se repitan o no. No sabia que querias todas las ciudades por clientes unicos.... en ese caso si sirve el GROUP BY
753  Programación / Bases de Datos / Re: Ayuda SQL DISTINCT en: 23 Octubre 2009, 15:42 pm
Citar
Porque si se fijan si se fijan a lo que el se refiere es a los clientes que no se repiten independiente del nombre que tengan porque si tienen el mismo nombre de Maria pero una Vive Mexico y la otra en Uruguay los registros no estan repetidos porque son dos clientes diferentes totalmente porque viven en diferentes ciudades u de esa forma creeo k es lo mas logico...

Si pero fijate:

Citar
Lo malo es que no me muestra los datos que se repiten en el campo CIUDAD.

Entonces si solo muestra Maria de Mexico, Uruguay donde queda??? el no quiere a Maria y Uruguay, pero si quiere a Uruguay y a Mexico.
754  Programación / Bases de Datos / Re: Ayuda SQL DISTINCT en: 23 Octubre 2009, 14:43 pm
Supongo que si seba123neo   :-*   :-*   :-*

Por cierto, se puede confundir la peticion del chico un pelin  :rolleyes:

Rectifico, si el chico en cuestion lo que desea es los clientes unicos no repetidos y las ciudad repetidas el podria optar por lo siguiente:

Código
  1.  
  2. SELECT DISTINCT CLIENTE FROM CLIENTES
  3. UNION ALL
  4. SELECT CIUDAD FROM CLIENTES HAVING COUNT(CIUDAD) > 2
  5.  
  6.  

Asi obtendria todos los clientes unicos no repetidos, y todas las ciudades repetidas mas de una vez  ;)
755  Programación / Bases de Datos / Re: Ayuda SQL DISTINCT en: 23 Octubre 2009, 06:23 am
Yo entendi esto:

Citar
mostrar los clientes sin repeticiones y la ciudad con repeticiones.

Lo malo es que no me muestra los datos que se repiten en el campo CIUDAD.

Mostrar Clientes unicos sin repeticiones y Mostrar todas las ciudades se repitan o no. Si esto es lo que el realmente quiere, me temo que el GROUP BY seria obsoleto ya que lo limitaria solo a mostrar registros unicos tanto de Clientes como Ciudad.

756  Programación / Bases de Datos / Re: Ayuda SQL DISTINCT en: 23 Octubre 2009, 03:25 am
Citar
Pero de lo contrario no, porque si existe solo una Maria en la tabla no hay razón para que el MAX( ) de ese resultado

Si ternura te entiendo en parte, aunque debes asumir que si el usuario que inicio el post dijo yo quiero todos aquellos clientes unicos que no se repitan, es porque de alguna manera el debe tener muchos clientes repetidos. Imaginate que yo tengo la siguiente tabla:

mysql> select * from clientes;
+---------+-----------+
| cliente | ciudad    |
+---------+-----------+
| Maria   | Mexico    |
| Carlos  | Peru      |
| Luis    | Africa    |
| Matias  | Peru      |
| Ana     | Argentina |
| Luis    | Mexico    |
| Ana     | Brazil    |
| Maria   | Uruguay   |
+---------+-----------+
8 rows in set (0.00 sec)

Como veras hay clientes repetidos en el caso de la tabla expuesta tenemos como clientes repetidos a 'Ana' y 'Maria'  Como tambien puedes observar cada una de ellas esta en un pais distinto. Ahora que ocurre con esta consulta:

mysql> select cliente, max(ciudad) from clientes group by cliente;
+---------+-------------+
| cliente | max(ciudad) |
+---------+-------------+
| Ana     | Brazil      |
| Carlos  | Peru        |
| Luis    | Mexico      |
| Maria   | Uruguay     |
| Matias  | Peru        |
+---------+-------------+
5 rows in set (0.00 sec)

Al utilizar la funcion MAX(ciudad) estas diciendo a la consulta, devuelveme todos los registros que tengan el mayor valor (si fueran campos numericos) pero como son campos caracteres, el MAX() lo que hace es retornar todas aquellas frases que empiezen con el caracter que se aproxime mas a la letra 'Z' que es la ultima del abecedario y la cual vendria siendo la de mayor valor si fuese numerica. Por ende la consulta anterior devuelve a 'Ana' con Ciudad 'Brazil' (Ya que Ana en ciudad Argentina, recuerda que Argentina empieza por 'A' por lo cual 'Brazil' es mayor por empezar con 'B' por eso la consulta te retorna el valor de 'Ana' que le pertenece 'Brazil' y no 'Ana' que le pertenece 'Argentina'  lo mismo ocurre para 'Maria' se retorna 'Maria de Uruguay' y no 'Maria de Mexico' el caracter 'U' de Uruguay esta mas cerca de la 'Z' que la 'M' de 'Mexico' ;)  no se si me explico  :-\ )

Prosigo, recuerda que el usuario que inicio este post dijo, yo quiero todos los Clientes unicos no repetidos (por lo cual en parte de la peticion de Clientes tu consulta estaria correcta devuelve los clientes unicos no repetidos) pero.... porque hay otro pero en el aire :) recuerda que el amigo solicito que tambien queria todas las ciudades se repitiesen o no.... entonces, si utilizamos la funcion MAX() como propones y al utilizar el GROUP BY que es una clausula que dice por cada uno, que hara tu consulta? MAX le dara prioridad a 'Maria de Brazil' pero que pasa con 'Argentina' el usuario no quiere a 'Maria Argentina' pero si quiere a 'Argentina', entonces que pasa con la ciudad 'Argentina' con la consulta usando MAX y GROUP BY????  se queda fuera, asi de simple. Sin embargo con un UNION ALL

Código
  1.  
  2. mysql> SELECT DISTINCT cliente FROM clientes
  3.    -> UNION ALL
  4.    -> SELECT ciudad FROM clientes;
  5. +-----------+
  6. | cliente   |
  7. +-----------+
  8. | Maria     |
  9. | Carlos    |
  10. | Luis      |
  11. | Matias    |
  12. | Ana       |
  13. | Mexico    |
  14. | Peru      |
  15. | Africa    |
  16. | Peru      |
  17. | Argentina |
  18. | Mexico    |
  19. | Brazil    |
  20. | Uruguay   |
  21. +-----------+
  22. 13 ROWS IN SET (0.00 sec)
  23.  
  24.  
  25.  

De los cuales :

Clientes unicos no repetidos:

 Maria     |
| Carlos    |
| Luis      |
| Matias    |
| Ana 

Todas las ciudades repetidas o no:

| Mexico    |
| Peru      |
| Africa    |
| Peru      |
| Argentina |
| Mexico    |
| Brazil    |
| Uruguay   |

De esa manera el chico obtiene los clientes unicos no repetidos, y obtiene todas las ciudades se repitan o no... lamentablemente los datos vienen juntos con el UNION ALL primero imprime los clientes unicos y debajo de estos todas las ciudades... por lo cual le dije que el debia filtrar o buscar la forma de obtener esos datos individualmente o imprimirlos asi en su Listbox.
757  Programación / Bases de Datos / Re: Ayuda SQL DISTINCT en: 22 Octubre 2009, 22:52 pm
Tuve que editar porque me explico terriblemente mal  :rolleyes: pero captaste la idea de lo que decia  ;)

Recuerda que la funcion MAX lo que hace es averiguar cual es el record numerico mas alto de un registro dentro de una tabla, tambien ten pendiente que el campo CIUDAD guarda datos no numericos sino de caracteres  ;) por lo que te imprimira la CIUDAD en este caso que empieze con el caracter alfabetico mas aproximado a 'Z' que es el ultimo caracter del abacedario  :rolleyes:  

Imaginate que tengas esto

Maria  Argentina
Carlos Peru

Obtendrias un resultado como el siguiente utilizando esta consulta :

SELECT  CLIENTE, MAX(CIUDAD) CIUDAD FROM CLIENTES GROUP BY CLIENTE;

Maria Peru
Carlos Peru



No se la verdad a lo mejor yo interprete mal su peticion, pero lo que entiendo es que el quiere saber los clientes unicos no repetidos que posee la tabla (con la clausula DISTINCT) le basta. Y quiere saber los registros del campo Ciudades que se repiten y no se repitan en resumen todos los registros del campo CIUDAD.
758  Programación / Bases de Datos / Re: Ayuda SQL DISTINCT en: 22 Octubre 2009, 22:01 pm
Tranquilo chico  :-*   :-*  es entendible lo que yo entiendo es que el quiere los Clientes unicos que no se repitan, y todas las Ciudades se repitan y no.  Con ese UNION ALL el podria obtener esos datos, ahora el orden del mostrado bueno... ahi no lo puedo ayudar, ya que primero se imprimiran en pantalla todos los clientes unicos y debajo de estos todas las ciudades repetidas y no.

 ;)
759  Programación / Bases de Datos / Re: Ayuda SQL DISTINCT en: 22 Octubre 2009, 21:44 pm
Que pena que estes pasando por este dilema  ;)

Puedes hacerlo de la siguiente manera (Pero el resultado impreso a lo mejor no quede en el orden que lo quieres tener)

SELECT DISTINCT CLIENTE FROM CLIENTES
UNION ALL
SELECT CIUDAD FROM CLIENTES;

Los datos mostrados seria primero los clientes unicos, y abajo de estos todas las Ciudades repetidas.

760  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Pedido de nuevo Sub-foro en: 20 Octubre 2009, 05:53 am
Me apunto!!!



De hecho aveces he visitado el foro de PHP y efectivamente algunas veces encuentro mas problemas con consultas a MySQL que con codigo PHP  :xD 

Base de datos no es solo manejar Lenguaje SQL, hay muchos asuntos de por medio como la mejor manera de disenar tus tablas, que motor de almacenamiento conviene para X proyecto, como optimizar consultas para ahorrarse ram fisica y lectura del disco, etc. Por otro lado entiendo aunque no se si es percepcion visual mia, que hay poco apoyo y bajo manejo de base de datos en muchos usuarios del foro.. y algunas ayudas tienden a resolver el problema pero otras se quedan a medias.

Páginas: 1 ... 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 [76] 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 ... 96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines