Problemas con inner Join para unir tablas

Que tal estoy tratando de unir tablas en un solo reporte con Inner Join, el problema que tengo que al momento de unir no hace la suma de cantidades correctamente de los productos de las tablas boletas y facturas, llevo meses tratando de solucionar el problema pero hasta ahora no puedo lograrlo

$union= mysql_query("select eefactulinea.*,factulinea.*,articulos.*,SUM(eefactulinea.cantidad) as numero from  articulos,eefactulinea
inner join factulinea on
eefactulinea.codigo=factulinea.codigo
where factulinea.codigo=articulos.codarticulo and articulos.codarticulo=eefactulinea.codigo GROUP BY articulos.codarticulo" ) ;
echo "<table width= 1150 border=1 align=center >";
while ($row = mysql_fetch_array($union))
  {
  echo "<tr>\n";
  echo "<td> "."<center>".$row["datos_producto"]."</center>"."</td>\n";
  echo "<td> "."<center>".$row["codigo"]."</center>"."</td>\n";
  echo "<td> "."<center>".$row["numero"]."</center>"."</td>\n";
  }  
 echo "</table>\n";

2 respuestas

Respuesta

Esto creo que te puede servir:

http://compunita.com/blog/2015/08/uso-de-inner-join-en-php-y-mysql/ http://compunita.com/blog/2015/08/uso-de-inner-join-en-php-y-mysql/ 

Respuesta

Podrías hacer en excel lo que esperarías de la consulta y poner una imagen o el resultado que esperarías. Porque la consulta de mysql que esta haciendo no esta correcta

Bueno, pongo los registros de la tabla eefactulinea (detalle de boletas)

la tabla  factulinea (detalle de facturas)

donde código es el código de los productos

con unión:

total: es la cantidad de ventas

con Inner Join

SELECT B.codigo,SUM(F.cantidad) AS cant_total FROM eefactulinea AS B
INNER JOIN factulinea AS F ON F.codigo = B.codigo GROUP BY B.codigo

Como se ve con inner join no me da los resultados correctos ya que la cantidad total no es la correcta y no aparece el otro producto ( o algo estoy haciendo mal en la consulta)

Lo que trato de hacer es que después de hacer una consulta en esta ventana

Me genere el reporte de ventas del Vehículo A (por ejemplo) en un rango de fechas (inicio, fin)

Donde: vehículo pertenece a una tabla llamada Distribuidores

Fecha: corresponde a las tablas facturas(cabecera de la factura) y eefacturas( cabecera de la boleta)

Como te decía mi problema con Union es que no puedo agregar al select las otras 3 tablas que necesito para generar esa consulta porque ahí si me varia el resultado

En el reporte debe aparecer

¿Quieres sumar la cantidad que esta en la boleta con la cantidad que esta en la factura?

Porque si es así la consulta quedaría de la siguiente manera

SELECT b.codarticulo,b.datos_productos,(b.cantidad+f.cantidad) AS total from factulinea AS f INNER JOIN eefactulinea AS b ON f.codigo = b.codigo

Si ahora si da el resultado correcto pero el detalle es que como puse en las imágenes de las tablas en ese ejemplo en la tabla facturas no existe ventas con el código 2 por eso en el reporte no me aparece ese producto y eso no debería de pasar

Prueba utilizando el left join

SELECT b.codarticulo,b.datos_productos,(b.cantidad+f.cantidad) AS total from factulinea AS f LEFT JOIN eefactulinea AS b ON f.codigo = b.codigo

que tal, disculpa por seguir en lo mismo pero sigo con el problema que no esta sumando bien los datos

tengo registrado en boletas:

producto 1:  4

Producto 2:  2

Facturas:

producto 1:  2

Producto 2:  1

pero en el reporte me sale

producto 1: 10

producto : 4

SELECT eefactulinea.*,sum(eefactulinea.cantidad+factulinea.cantidad) AS total from eefactulinea LEFT JOIN factulinea  ON eefactulinea.codigo = factulinea.codigo group by eefactulinea.codigo,factulinea.codigo

La consulta no es necesario aplicar la función SUM. Corrige eso. Y Te debería de quedar así:

SELECT eefactulinea.*,(eefactulinea.cantidad+factulinea.cantidad) AS total from eefactulinea LEFT JOIN factulinea  ON eefactulinea.codigo = factulinea.codigo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas