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

Restar dos campos de dos tablas que no están relacionadas

Estas en el tema de Restar dos campos de dos tablas que no están relacionadas en el foro de Mysql en Foros del Web. Buenas tardes por favor necesito una ayuda: tengo estas tres tablas inventario id productos_id cantidad entrada_salida productos nombre marca modelo especificacion precio proformas_has_productos productos_id cantidad ...
  #1 (permalink)  
Antiguo 13/02/2012, 10:44
 
Fecha de Ingreso: febrero-2012
Mensajes: 1
Antigüedad: 12 años, 2 meses
Puntos: 0
Restar dos campos de dos tablas que no están relacionadas

Buenas tardes por favor necesito una ayuda:
tengo estas tres tablas

inventario
id
productos_id
cantidad
entrada_salida

productos
nombre
marca
modelo
especificacion
precio

proformas_has_productos
productos_id
cantidad
fecha
total

lo que necesito es saber como retar los campos de inventario.cantidad - proformas_has_productos.cantidad

lo que hice fue esto:


(
SELECT productos.id, SUM( cantidad * entrada_salida ) AS TOTAL
FROM inventario
INNER JOIN productos ON inventario.productos_id = productos.id
WHERE 1
GROUP BY productos_id
)
UNION ALL (

SELECT productos.id, proformas_has_productos.cantidad
FROM proformas_has_productos
INNER JOIN productos ON proformas_has_productos.productos_id = productos.id
WHERE 1
GROUP BY productos_id
)
esto me devuelve

id TOTAL
1 37
2 20
3 35
4 77
6 15
3 25

ahora lo que quisiera es como restar las cantidades por ejemplos id3 35 - id3 25 sucesivamente si existe con todos de esa manera

otra forma que queria hacer era
SELECT SUM(TOTAL)
FROM (
SELECT productos.id, SUM( cantidad * entrada_salida ) AS TOTAL
FROM inventario
INNER JOIN productos ON inventario.productos_id = productos.id
WHERE 1
GROUP BY productos_id
UNION ALL
SELECT productos.id, SUM((proformas_has_productos.cantidad)*(-1)) AS TOTAL
FROM proformas_has_productos
INNER JOIN productos ON proformas_has_productos.productos_id = productos.id
WHERE 1
GROUP BY productos_id
)
pero me sale error
#1248 - Every derived table must have its own alias
por favor necesito una ayuda con esto por favor
  #2 (permalink)  
Antiguo 13/02/2012, 10:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Restar dos campos de dos tablas que no están relacionadas

Cita:
pero me sale error
#1248 - Every derived table must have its own alias
Lo que necesitas es un traductor de inglés. Te sugiero usar el de Google.
Eso significa:
Cita:
"Cada tabla derivada debe tener su propio alias."
Y lo que implica es que estás haciendo una subconsulta en el FROM sin ponerle el correspondiente alias... Es una regla básica del SQL.
Código MySQL:
Ver original
  1.     SUM(TOTAL)
  2.     (SELECT productos.id, SUM( cantidad * entrada_salida ) TOTAL
  3.     FROM inventario INNER JOIN productos ON inventario.productos_id = productos.id
  4.     WHERE 1
  5.     GROUP BY productos_id
  6.     UNION ALL
  7.     SELECT productos.id, SUM((proformas_has_productos.cantidad)*(-1)) AS TOTAL
  8.     FROM proformas_has_productos
  9.     INNER JOIN productos ON proformas_has_productos.productos_id = productos.id
  10.     WHERE 1
  11.     GROUP BY productos_id)
¿Ves el cierre del paréntesis final? ¿Dónde está el alias?
En ninguna parte.

Código MySQL:
Ver original
  1.     SUM(TOTAL)
  2.     (SELECT productos.id, SUM( cantidad * entrada_salida ) TOTAL
  3.     FROM inventario INNER JOIN productos ON inventario.productos_id = productos.id
  4.     WHERE 1
  5.     GROUP BY productos_id
  6.     UNION ALL
  7.     SELECT productos.id, SUM((proformas_has_productos.cantidad)*(-1)) TOTAL
  8.     FROM proformas_has_productos
  9.     INNER JOIN productos ON proformas_has_productos.productos_id = productos.id
  10.     WHERE 1
  11.     GROUP BY productos_id) T1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 13/02/2012 a las 11:05

Etiquetas: campos, join, relacionadas, restar, select, tabla, tablas
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 14:36.