Por una cuestión de simplicidad de código, en lugar de poner nombres completos y arriesgarse a constantes errores de sintaxis, en SQL se usan ALIAS de las tablas usadas. Los alias se declaran poniendo un nombre adyacente ala denominación de la misma (tablas, bases o campos) o usando la cláusula AS (un poco obsoleta, ya no es mandatoria):
Código sql:
Ver originalSELECT t.Campo1 AS a
FROM Tabla2 AS t;
Estas dos dan el mismo resultado.
En cuanto al error,
sería mejor que dijeras qué error te sale... como es
tu base y
tus datos, no se si el problema es de sintaxis o de datos, a menos que me lo digas.
Yendo a la lógica de lo hecho, la idea es:
Código sql:
Ver originalSELECT
SUM(cantidad) total_apuntados,
id_producto,
vendedor,
eliminado
FROM apuntados,
WHERE
vendedor = colname
AND apuntados.eliminado='no'
GROUP BY id_producto
Esto debería devolver un listado de productos vendidos por el vendedor cuyo ID esté en la variable "colname" (tu tienes que poner ese valor, obviamente), sumando la cantidad en una columna que se llamará "total_apuntados", la cual contendrá también el id_producto y se agruparán por él.
Esto:
Código sql:
Ver originalSELECT
p.id_producto,
(p.cantidad - t.total_apuntados) saldo_productos,
t.eliminado,
t.vendedor
FROM productos p INNER JOIN
() T USING(id_producto)
ORDER BY id_producto;
Tomará la tabla productos y devolverá un listado de todos los productos que figuren en la subconsulta, entregando en la columna denominada "saldo_productos" la resta de la existencia menos lo vendido. Como la subconsulta genera una tabla derivada (una tabla en memoria), debe llevar un alias. De allí la "T" después de los paréntesis.
No sirve hacer un JOIN simple entre las dos tablas, porque entonces el proceso cruzará todos los datos antes de sumar los registros que únicamente pertenezcan a ese vendedor, lo cual es ineficiente.