Subconsulta sql

Fíjate que necesito hacer una tercer consulta de dos consultas anteriores, he intentando guardando las dos consultas en una tabla y generando una tercer tabla utilizando el comando union select pero me genera un error, podrías ayudarme sugiriendo alguna forma.

2 respuestas

Respuesta
1
Las consultas de unión REQUIEREN que todos los campos origen TENGAN EL MISMO NOMBRE.. supongo que por ahí te viene el error..
Fíjate en una consulta de la base de datos Neptuno.mdb
SELECT Ciudad, NombreCompañía, NombreContacto, "Clientes" AS [Relación]
FROM Clientes
UNION SELECT Ciudad, NombreCompañía, NombreContacto, "Proveedores"
FROM Proveedores
ORDER BY Ciudad, NombreCompañía;
Los tres primeros campos son idénticos para las dos tablas, y únicamente el último es distinto porqué se indica un texto expreso y no el valor de un campo...
Por consiguiente en las dos consultas que tu tienes indícales un ALIAS igual a todos los campos..
Espero haber contestado tus dudas...
Saludos.
Jordi Pérez i Madern
Mataró (Barcelona)
Antes que nada muchas gracias por ayudarme, pero que puedo hacer si las dos tablas que estoy uniendo solo tienen un campo en común (este es del mismo tipo y tamaño), y por ese las estoy uniendo, el tamaño de una es diferente al de la otra tabla.
¿Se puede hacer algo? O ¿Existe algún otro método para solucionar mi problema?
Por el momento nuevamente Gracias.
Suponemos dos tablas...
TblClientes: Codigo, Nombre, Apellidos, Direccion, Telefono
tblProveedores: Código, NombreComercial, NombreFiscal, DirecciónCompleta, TelefonoOFax
Cómo ves tenemos nombres de campos distintos...
Ahora haremos dos consultas
QryClientes: SELECT Codigo As Código, Apellidos & ", " & Nombre As NombreComercial, DirecciónCompleta As Dirección, Telefono As Teléfono, "Clientes" As TipoPersona FROM tblClientes
qryProveedores: SELECT Código, NombreComercial, Direccion As Dirección, TelefonoOFax As Teléfono, "Proveedores" As TipoPersona FROM tblProveedores
Ahora ya tienes los campos de las dos tablas coincidentes con los nombres (Alias) con lo cual te va a resultar muy fácil la consulta de Unión Tipo..
SELECT * FROM qryClientes
UNION SELECT * FROM Proveedores
Esta consulta de unión debería funcionarte correctamente porque las dos consultas iniciales tienen los mismos nombres de campos..
En caso de que no quieras mostrar todos los campos, substituye el asterisco por los nombres de los campos a mostrar separados por una coma...
Saludos.
Jordi Pérez i Madern
Mataró (Barcelona)
Respuesta
1
Perdona spal pero con esos datos no se muy bien cual es el origen de tu error.
Yo para las consultas de las que hablas uso VISTAS es la mejor forma de consultar información sin tener que almacenar consultas intermedias en otras tablas.
De todas formas, si me das un ejemplo de lo que quieres podre ayudarte.
Gracias, por atender mi pregunta, mira el programita que estoy haciendo, controla las salidas de materia prima de un almacen basado en el método de Primeras Entradas Primeras Salidas, para esto alamaceno en una tabla los datos de la factura (entre ellos va la fecha y hora de entrada), en otra tabla la materia prima que entra en la factura.
Las salidas de este programa es un producto terminado, el cual lleva muchos componentes de materia prima, por lo tanto al ingresar una factura de salida tengo que ver que producto terminado salio, para ver que materia prima lo compone y así determinar la cantidad existente de materia prima.
Si este proceso lo hago de manera secuencial se tarda alrededor de 4 a 5 minutos procesando, necesito las consultas SQL para verificar que cuando salga un producto se realize con la materia prima más vieja y en caso de ser la misma fecha, que haya entrado materia prima, antes de salir el producto terminado.
Espero no te haya enredado más, lo que intento es hacer una consulta de las entradas, otra de las salidas y dentro de esta incluyo los componentes (que es la materia prima) de un producto terminando y finalmente (lo que no puedo), crear una tercer tabla uniendo las dos consultas anteriores.
Ojala me haya podido explicar, para que me puedas ayudar o sugerir alguna solución.
Sin más por el momento Gracias nuevamente.
Creo que he entendido algo, no demasiado, pero creo que lo suficiente.
Lo que tu necesitas es una consulta final que una información de las salidas y sus componentes.. ¿no?
pues bien, necesitarás hacer un JOIN de ambas tablas. Y nunca un UNION,
Un union es la suma de dos consultas que tienen distintas fuentes de datos pero ambas con la misma estructura, y ese no es tu caso, creo.
El JOIN sirve para pegar dos consultas haciendo entre ellas el producto cartesiano, para unirlas necesitas tener campos comunes en ambas tablas.
Suerte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas