FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
¿Pero exactamente qué quieres hacer?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
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 ID CODIGO NOMBRE CANTIDAD ID CODIGO NOMBRE CANTIDAD 1 A001 TORNILLOS A 5.000 1 A002 ARANDELAS A 20.000 2 A002 ARANDELAS A 6.000 2 A001 TORNILLOS A 15.000 3 A003 TUERCAS A 4.000 3 A002 ARANDELAS A 20.000 4 A001 TORNILLOS A 4.000 4 A003 TUERCAS A 15.000 5 A002 ARANDELAS A 3.000 5 A001 TORNILLOS A 25.000 Código:
ID CODIGO NOMBRE CANTIDAD 1 A001 TORNILLOS A 5.000 4 A001 TORNILLOS A 4.000 2 A001 TORNILLOS A 15.000 5 A001 TORNILLOS A 25.000 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
|
#4
|
|||
|
|||
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. |
#5
|
||||
|
||||
Hay varias formas, lo mejor es usar parámetros.
De todas formas prueba a usar la comilla doble "
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#6
|
|||
|
|||
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. Última edición por Casimiro Notevi fecha: 28-08-2022 a las 23:51:14. Razón: Poner etiquetas [delphi] [/delphi] al código. |
#7
|
||||
|
||||
Ahí no, en el parámetro:
Y por cierto, no olvides usar las etiquetas para código, gracias.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
||||
|
||||
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:
|
#9
|
||||
|
||||
Es la mejor opción y la más profesional y segura.
Cita:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
|||
|
|||
Ok, funciona perfectamente, gracias por vuestra paciencia.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
SQL - Relación de 3 Tablas | VFont | SQL | 2 | 01-07-2014 02:01:18 |
Relación de dos tablas | laguilar59 | SQL | 3 | 13-12-2012 18:05:55 |
unir dos tablas | djanp | Conexión con bases de datos | 5 | 28-11-2007 16:30:06 |
Relacion de dos tablas DBF | Antuan | Conexión con bases de datos | 7 | 01-10-2005 22:10:50 |
unir tablas | Mario1980 | Conexión con bases de datos | 8 | 22-10-2004 11:36:45 |
|