FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda con sentencia SQL
Hola amigos.
Tengo dos tablas PARADOX y no consigo dar con la sentencia SQL adecuada para el resultado que necesito. Una tabla (A), contiene los campos ID (string, unico) y Datos (blob). Tiene más campos, pero no son problematicos. La otra tabla (B) contiene los campos ID (string, NO UNICO) y Comentario (string). Este seria un ejemplo de la tabla A: Código:
ID Datos 1 Hola Mundo 2 clubdelphi 3 Internet 4 Email Código:
ID Comentario 3 Internet es el futuro!!! 2 Buena Pagina 3 Hay que actualizar a la version 2.0 1 Tipico mensaje 4 No more SPAM !!! Todos los campos de la tabla A + el campo COMENTARIO de la tabla B, pero si en la tabla B hay más de un comentario sobre el mismo ID (como pasa con 3 -Internet) solo quiero ver el primero. Esto es lo que busco: Código:
ID Datos Comentario 1 Hola Mundo Tipico mensaje 2 clubdelphi Buena Pagina 3 Internet Internet es el futuro!!! 4 Email No more SPAM !!! Código:
SELECT * FROM A INNER JOIN B ON (A.id = B.id) ORDER BY A.id Código:
ID Datos Comentario 1 Hola Mundo Tipico mensaje 2 clubdelphi Buena Pagina 3 Internet Internet es el futuro!!! 3 Internet Hay que actualizar a la version 2.0 <<-- Esto NO 4 Email No more SPAM !!! Gracias PD: Editado para ver mejor los ejemplos Última edición por Sick boy fecha: 27-04-2005 a las 11:01:17. |
#2
|
||||
|
||||
Esta sentencia te devolvería lo que quieres, pero...
Código:
SELECT DISTINCT a.id, a.datos, MIN(comentario) as comentario FROM a , b where a.id=b.id group by a.id,a.dato Código:
ID Datos Comentario 1 Hola Mundo Tipico mensaje 2 clubdelphi Buena Pagina 3 Internet Internet es el futuro!!! 4 Email No more SPAM !!! Código:
3 Internet es el futuro!!! 3 Atencion, Hay que actualizar a la version 2.0 Código:
ID Datos Comentario 1 Hola Mundo Tipico mensaje 2 clubdelphi Buena Pagina 3 Internet Atencion, Hay que actualizar a la version 2.0 4 Email No more SPAM !!!
__________________
Saludos, Peter Investment |
#3
|
|||
|
|||
Gracias, pero el campo DATOS es BLOB, y no lo puedo cambiar !!!!
Cita:
El BDE no me permite GRUOP BY en los campos BLOB. Tampoco me permite un CAST(datos as VARCHAR(200)) con el que podría intentar tratar el campo BLOB como alfanumerico Evidentemente, lo puedo hacer con 2 querys, pero ese no es el objetivo, ya que necesito 1 solo dataset. Gracias por su ayuda |
#4
|
||||
|
||||
Ya que no se puede agrupar por campos Blob, mi recomendación es que uses una tabla auxiliar donde almacenar los campos de la tabla B que te interesen y a partir de esa tabla "filtrada" ya puedes resolver facilmente el caso.
Un saludo. |
#5
|
|||
|
|||
Gracias Hermes_32
Cita:
Las tablas tienen más campos que los comentados, pero ninguno crea problemas, solo el tipo BLOB. Si quito el campo BLOB del query todo funciona, pero el caso es que ese campo es importantisimo. PD: De la tabla B, solo quiero 1 resultado, no me importa despreciar los demas, y no me importa si el COMENTARIO es el primero, el ultimo o el 26º Gracias |
#6
|
||||
|
||||
Buenas de nuevo Sick. He resuelto el problema con un campo calculado. Puedo enviarte el programilla por mail si quieres ya que por aqui darte la solucion es poco estético.
un saludo. |
#7
|
|||
|
|||
Gracias Hermes.
Si quieres enviarlo, mi correo es txuko.arroba.retemail.es (sustituir .arroba. por @) De todas formas, creo que se pueden postear ficheros de texto, y puesto que parece que nadie sabe como resolver esto, seria muy interesante hacerlo publico (si tu quieres, claro). Gracias de nuevo, y por el momento, la pregunta sigue en el aire...... Saludos |
#8
|
||||
|
||||
En una sola consulta podria ser:
Claro, b.comentario no puede ser blob. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#9
|
|||
|
|||
Gracias jachguate, pero no funcionó.
En Interbase / Firebird se que se pueden hacer subconsultas, pero lo he probado en Paradox y me dice "Capability not supported" De momento, he puesto un segundo query en el evento OnGetValue del componente al cual tengo que asignar el dataset. Asi consigo rellenar manualmente ese campo. Un poco chapuza, pero de momento funciona !!! Tengo que dejar PARADOX, no es la primera vez que no consigo que sentencias SQL "normalitas" funcionen..... Gracias a todos, aun no he perdido la esperanza de encontrar una solución más limpia y/o eficiente. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|