Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2006
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.636
Poder: 10
Emilio Va por buen camino
Prueba con esto...
Código SQL [-]
SELECT DISTINCT login, url FROM usuarios, enlaces GROUP BY url
__________________
Saludos
Emilio
Responder Con Cita
  #2  
Antiguo 21-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Gracias Emilio. Lo que pasa es que ahora no doy pie con bola. En realidad el problema hizo que iniciara este Hilo ya no es tal, ahora es otro, después de otros,... o sea, que te agradezco la respuesta, pero, me temo que mis problemas no terminan en la consulta SQL, sino que casi podría decirse que empiezan ahí... Tendré que leer sobre el tema y/o plantearme el proyecto que traigo entre manos de otra forma, desde un principio. Gracias igualmente.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 19-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hoy he retomado el tema que se planteó al comienzo de este Hilo y me alegro de haberlo hecho, pues he visto que la consulta SQL que propone Emilio funciona bien y podría servirme para evitar enlaces "duplicados" en el listado de enlaces compartidos de cierta página Web de cuyo nombre no quiero acordarme.

El caso es que estoy probando el "GROUP BY" y la cosa parece ir regularmente bien (tengo problemas con ciertas URLs, que parecen no tomarse como "iguales", aunque en realidad sí lo son... debe ser cuestión de las URLs, porque, se distingen de las que funcionan en que las que no tienen más caracteres y algunos caracteres como "&" y "?", por ejemplo.

Una cosa que quería preguntar... resulta que pruebo con una consulta SQL tal que así:

Código SQL [-]
SELECT DISTINCT login, url FROM usuarios, enlaces GROUP BY url

Y la cosa va más o menos como se espera (por el momento parece ir razonablemente bien con las pruebas que hemos hecho), pero, si la consulta se queda en esto:

Código SQL [-]
SELECT login, url FROM usuarios, enlaces GROUP BY url

O sea, si se quita el "DISTINCT" a la consulta SQL... se obtienen los mismos resultados... parece que la "magia" la hace el "GROUP BY" y, entonces, el "DISTINCT", ¿está demás? ¿sobraría? ¿cómo lo veis vosotros?

En todo caso muchas gracias a todos por la ayuda, y en especial a Emilio, que, habiéndome acercado a la solución, le respondí diciéndole que sí, pero, que no, en fin... cosas...

¡Gracias de nuevo a todos!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 19-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
parece que la "magia" la hace el "GROUP BY"
Y bastante magia ha de hacer. Habría que leer la documentación para ver qué hace MySql con ese GROUP BY pero no creo que sea estándar. No me quedaría claro qué sentido tiene agrupar por un campo y listar otro sin aplicarle alguna función de agrupación. Es decir, entiendo una consulta como

Código SQL [-]
select sum(costo), categoria from productos
group by categoria

donde se agrupan los registros por categoría y de cada grupo se calcula la suma de costos y es lo que se "imprime" junto a la categoría. Pero en una consulta como la que pones, se agrupa por URL y luego ¿qué se hace con cada grupo? ¿Cómo aparece el campo login en el conjunto de resultados? Vamos, si tengo la tabla

Código:
+---------+--------------------------+
| usuario | url                      |
+---------+--------------------------+
| pepe    |http://www.clubdelphi.com |
| juan    |http://www.clubdelphi.com |
| maria   |http://romansg.net        |
| roman   |http://romansg.net        |
| roman   |http://www.clubdelphi.com |
| maria   |http://www.clubdelphi.com |
+---------+--------------------------+
y agrupo por url, me quedan dos grupos, el de http://www.clubdelphi.com y el de http://romansg.net. ¿Cómo aparecenl listados? Quizá MySql agregue en automático el campo usuario al GROUP BY pero es lo que desconozco. En todo caso, quizá ahí haya que empezar, en la documentación.

// Saludos
Responder Con Cita
  #5  
Antiguo 19-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues sí, Román, supongo que tienes razón. Tengo por aquí La biblia de MySQL y procuro echar un vistazo y eso, y sobre GROUP BY hemos mirado, y sé que mi pregunta es de libro, es decir, puede localizarse en ellos, pero, no sé si será porque tengo la cabeza en dos o tres cosas... he querido plantear una solución al asunto y parece que funciona con la consulta que propuso Emilio.

Es cierto que me pones en un brete con lo que dices, porque se resalta que no he leído suficiente sobre MySQL ni me estoy preocupando de hacerlo por llevar a cabo otras cosas, ignorando que a lo mejor estas mismas cosas podrían llevarse a cabo de mejor modo, si antes leyera sobre MySQL... todo esto bien puede ser verdad.

Yo entiendo la siguiente consulta (seguramente mal, porque lo hago sin contrastar mi idea):

Código SQL [-]
SELECT DISTINCT login, url FROM usuarios, enlaces GROUP BY url

Como si dijéramos: "Selecciona el login y la url de la tabla usuarios y enlaces, pero, agrupados por su URL, es decir, siempre que estas últimas no se repitan".

Ahora bien, todavía y entendiendo mal la consulta anterior surge la pregunta de porqué esta otra consulta "parece funcionar", y entrecomillo porque a veces no se trata de que se produzcan errores: tal vez no se produzcan, pero, los resultados no sean del todo los perseguidos.

Digo que esta consulta ya sí que no la entiendo:

Código SQL [-]
SELECT login, url FROM usuarios, enlaces GROUP BY url

Porque falta el "DISTINCT",... y, sin embargo, tras ciertas pruebas, los resultados parecen los esperados: no se obtienen enlaces repetidos, que es lo que se persigue.

En fin. No voy a aburriros... el caso es que, efectivamente, estoy por dar marcha atrás y dejar las cosas como estaban: con la posibilidad que se listen enlaces repetidos, registros repetidos (en cierto modo, recuérdese que no son repetidos en todos sus campos), antes que utilizar una consulta SQl que, a qué negarlo, sin duda no termino de comprender...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 19-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
Es cierto que me pones en un brete con lo que dices, porque se resalta que no he leído suficiente sobre MySQL ni me estoy preocupando de hacerlo por llevar a cabo otras cosas, ignorando que a lo mejor estas mismas cosas podrían llevarse a cabo de mejor modo, si antes leyera sobre MySQL... todo esto bien puede ser verdad.
¿Brete? No escribí lo anterior como un regaño sino como una orientación. No era en el ánimo de evidenciar nada, simplemente señalar que a mi me da por que no es SQL estándar, y por tanto, para tener una respuesta acertada, es menester consultar en el manual en qué forma trata MySql al GROUP BY.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cual es la Forma Correcta de Guardar Texto en un IbDataset con TcpServer???? AGAG4 Varios 0 10-12-2004 22:14:41
Forma correcta de emigrar base de datos.. ronimaxh Firebird e Interbase 5 07-04-2004 23:34:38
existe una forma visual para crera tablas y consultas en interbase? viajero2015 Firebird e Interbase 4 21-02-2004 22:58:36
DISTINCT con query Robert Tablas planas 15 03-11-2003 15:53:38
Como pasar parametros de una forma hija a otra forma hija luisreg OOP 3 17-09-2003 18:18:50


La franja horaria es GMT +2. Ahora son las 03:01:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi