![]() |
Unir dos tablas sin relación
Tengo dos tablas creadas en Firebird (*.FDB), quiero unirlas para sacar un informe pero me encuentro con el siguiente problema, como es un poco complicado expresarlo os lo pongo en un ejemplo, esta tabla sería la original:
Lo que hago mediante SQL, es intentar filtrar la tabla pedidos y compras y filtrar por el codigo A001 (TORNILLOS A) y obtener en un informe la cantidad de pedidos y comprados de este artículo, el codigo que utilizo para esto es
De esta informe que lo hago en Rave Reports, me sale de la siguiente manera no sale nada por que no coincidente al filtrar un mismo registro con los id iguales. Si el código SQL es el siguiente:
El informe es el siguiente:
También seria igual si el código es left join, y y si con right join. El informe sería: Si lo filtro por la tabla compras me arrastra los datos del mismo registro de la tabla Pedidos y al revés y sólo busco que me filtre en ambas tablas las que son iguales al código que espefico. Lo he intentado con Inner Outer Join, y con las distintas formas de SQL JOINS SQL Joins Mi intención es poder sacar el siguiente informe:
Donde puedo ver los Tornillos pedidos y Comprados en un sólo informe, pero no encuentro la manera de filtrar ambas tablas y unirlas en este informe. |
¿Pero exactamente qué quieres hacer?
|
No entiendo bién que es lo que quieres hacer, pero creo que la solución a tu cuestión es utilizar UNION.
Si las tablas contienen Código:
TABLA PEDIDOS TABLA COMPRAS Código:
ID CODIGO NOMBRE CANTIDAD La instrucción UNION puede tener dos formas UNION : Si un registro se repite solo devuelve uno. Si tanto en la tabla de pedidos como en compras hubiera un registro 1,'A001', TORNILLOS A, 10,000 te deolvería una sola línea UNION ALL : Devuelve todos los registros aunque estén repetidos. Si tanto en la tabla de pedidos como en compras hubiera un registro 1,'A001', TORNILLOS A, 10,000 te deolvería dos líneas) Nota 2: Puedes agregar un campo fijo para saber el origen de cada dato. De lo contrario no sabrás si el ID se refiere al ID de una tabla o de otra
|
duilioisol me sale todo como dices la tabla perfecto, para este caso utiliza UNION en vez de UNION ALL, miles de gracias.
pero lo único que no consigo introducir los datos en el campo (TIPO) para diferenciar si es de una tabla u otra, ya que lo hago en modo diseño por que tengo que pasar por 'SQl.Txt:=' '': /* sql.text:=' SELECT 'PED' as tipo, id, codigo, nombre, cantidad FROM PEDIDOS WHERE codigo = 'A001' UNION SELECT 'COM' as tipo, id, codigo, nombre, cantidad FROM COMPRAS WHERE codigo = 'A001' ' */ He intentado miles de formas pero al usar las comillas no lo puedo hacer, no consigo insertar los datos. |
Hay varias formas, lo mejor es usar parámetros.
De todas formas prueba a usar la comilla doble " |
No tampoco con doble comillas funciona da error
Por internet no encuentro nada que pueda unir dos tablas y además insertar datos fijos en un campo, con esta sintaxis. |
Ahí no, en el parámetro:
Y por cierto, no olvides usar las etiquetas para código, gracias. |
He intentado miles de formas pero al usar las comillas no lo puedo hacer, no consigo insertar los datos.
¿Cuál es el mensaje de error? Si es un error de Delphi que te impide compilar y dice alg así como que "la línea no termina" debes seguir haciéndolo como hasta ahora lo hacías (Según tu ejemplo anterior)
Para enteder el tema: 1. Los strings en Delphi se determinan entre comillas simpels
Código:
=>Hello World
Código:
=>Hello 'World'
Código:
=>Hello 'World' Yo suelo hacerlo de la siguiente manera para poder ver código SQL dentro de código Delphi facilmente:
|
Es la mejor opción y la más profesional y segura.
Cita:
|
Ok, funciona perfectamente, gracias por vuestra paciencia.
|
La franja horaria es GMT +2. Ahora son las 21:12:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi