Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problemas con selects múltiples y UNION..

Estas en el tema de Problemas con selects múltiples y UNION.. en el foro de Mysql en Foros del Web. Hola amigos del foro necesito su ayuda para resolver esto, os comento: Tengo que hacer un listado, muy personalizado, que tiene que mostrar Productos de ...
  #1 (permalink)  
Antiguo 10/01/2008, 11:20
Avatar de paskiller  
Fecha de Ingreso: marzo-2005
Mensajes: 13
Antigüedad: 19 años, 1 mes
Puntos: 0
Exclamación Problemas con selects múltiples y UNION..

Hola amigos del foro necesito su ayuda para resolver esto, os comento:

Tengo que hacer un listado, muy personalizado, que tiene que mostrar Productos de Alimentación con sus códigos, descripciones y precios (tanto por unidad, como por caja y precio de venta)...

El tema es que no he sabido sacar toda la información que me pedían en menos de 4 Selects, ya que habían algunos campos como las tarifas que para obtenerlas tenía que hacer varias consultas.

El caso es que me habían dicho que con UNION, podía hacer varias consultas y al final unirlas y las columnas que no coincidieran aparecerían también. Probando y probando he visto que me obliga a que tengan el mismo número de campos y eso me parte mis ilusiones.

Ilustro mi problema con un ejemplo así se entiende mejor:

Código PHP:
SELECT e.CODARTP as Códigoe.UNICOMPO as Unidadese.DESCARTC as Descripciónc.DESCCAR as FLOyBIOt.PRECIO as T1uni
FROM ESCANDALLO 
as e  LEFT OUTER JOIN ARTICULO as a2 ON (e.CODARTC a2.CODART)
LEFT OUTER JOIN TARIFAVE as t ON (a2.CODART t.CODART)
LEFT OUTER JOIN CARACTERISTICAS as c ON (a2.CAR2 c.CODCAR)
WHERE e.CODARTP IN (
    
SELECT a1.CODART as Código
    FROM ARTICULO 
as a1
    WHERE a1
.CODART like '%K'
    
AND a1.CAR7='       3'
    
)
AND 
t.TARIFA='       1'
AND t.FECMAX='31/12/9999'
AND c.NUMCAR='2'
GROUP BY a2.CAR4e.CODARTPe.UNICOMPOe.DESCARTCc.DESCCARt.PRECIO
UNION
SELECT e
.CODARTP as Códigoe.UNICOMPO as Unidadese.DESCARTC as Descripciónc.DESCCAR as FLOyBIOt.PRECIO as PVPuni
FROM ESCANDALLO 
as e  LEFT OUTER JOIN ARTICULO as a2 ON (e.CODARTC a2.CODART)
LEFT OUTER JOIN TARIFAVE as t ON (a2.CODART t.CODART)
LEFT OUTER JOIN CARACTERISTICAS as c ON (a2.CAR2 c.CODCAR)
WHERE e.CODARTP IN (
    
SELECT a1.CODART as Código
    FROM ARTICULO 
as a1
    WHERE a1
.CODART like '%K'
    
AND a1.CAR7='       3'
    
)
AND 
t.TARIFA='PVP'
AND t.FECMAX='31/12/9999'
AND c.NUMCAR='2'
GROUP BY a2.CAR4e.CODARTPe.UNICOMPOe.DESCARTCc.DESCCARt.PRECIO 
Como podéis ver he puesto un ejemplo en el que ya tengo los campos igualados, en la 1a Select hay un campo t.PRECIO as T1uni y en la 2a hay un campo t.PRECIO as PVPuni.

Ambos me dan valores diferentes pero al hacer la UNION los valores de la 2a select desaparecen, supongo porque son el mismo campo.

Alguien sabe como puedo hacer lo que quiero?

Muchas gracias a todos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:17.