![]() |
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 DatosCódigo:
ID ComentarioTodos 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 ComentarioCódigo:
SELECT * FROM A INNER JOIN BCódigo:
ID Datos ComentarioGracias PD: Editado para ver mejor los ejemplos |
Esta sentencia te devolvería lo que quieres, pero...
Código:
SELECT DISTINCT a.id, a.datos, MIN(comentario) as comentarioCódigo:
ID Datos ComentarioCódigo:
3 Internet es el futuro!!!Código:
ID Datos Comentario |
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 |
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. |
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 |
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. |
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 |
En una sola consulta podria ser:
Claro, b.comentario no puede ser blob. Hasta luego. ;) |
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. |
| La franja horaria es GMT +2. Ahora son las 06:03:43. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi