Foros del Web » Programando para Internet » PHP »

Diferencia Entre Tablas (compra - Venta)

Estas en el tema de Diferencia Entre Tablas (compra - Venta) en el foro de PHP en Foros del Web. HOLA TENGO UNA SITIO QUE SIMULA COMPRA VENTA DE ACCIONES DE EQUIPOS DE FUTBOL, PRETENDO PRESENTAR LAS ACCIONES DISPONBLES. CON ESTA SENTENCIA OBTENGO EL TOTAL ...
  #1 (permalink)  
Antiguo 30/08/2005, 13:35
Avatar de fatherjuan  
Fecha de Ingreso: mayo-2005
Ubicación: Estado de México
Mensajes: 132
Antigüedad: 19 años, 5 meses
Puntos: 0
Diferencia Entre Tablas (compra - Venta)

HOLA TENGO UNA SITIO QUE SIMULA COMPRA VENTA DE ACCIONES DE EQUIPOS DE FUTBOL, PRETENDO PRESENTAR LAS ACCIONES DISPONBLES.

CON ESTA SENTENCIA OBTENGO EL TOTAL DE ACCIONES COMPRADAS POR EQUIPO:

mysql> SELECT ticker, Sum(cant_acciones) AS Total_cant_acciones FROM compra_acciones where user_name = 'user' GROUP BY ticker;
+--------+---------------------+
| ticker | Total_cant_acciones |
+--------+---------------------+
| AMFBMX | 10 |
| CAFBMX | 20 |
| MTFBMX | 1013 |
| SLFBMX | 10 |
| TGFBMX | 10 |
| UGFBMX | 12 |
+--------+---------------------+

CREI QUE HACIENDO ESTO:

mysql> SELECT compra_acciones.ticker, (Sum(compra_acciones.cant_acciones) - Sum(ventas_acciones.cant_acciones) ) as total_acciones FROM compra_acciones INNER JOIN ventas_acciones ON compra_acciones.ticker = ventas_acciones.ticker where compra_acciones.user_name = 'pitsolana' GROUP BY ticker;

OBTENDRIA LA DIFERENCIA ENTRE ACCIONES COMPRADAS Y ACCIONES VENDIDAS PERO, NO ES ASI. SEGURAMENTE NO ESTOY USANDO LA SENTENCIA ADECUADA, PERI NO ENCUENTRO NADA EN INTERNET QUE ME AYUDE, PODRIA ALGUIEN????

GRACIAS...

PD(ESTE FORO ME HA SALVADO MUCHAS VECES Y LA MAYORIA BUSCO ANTES DE PREGUNTAR, PERO CONFORME AVANZO EN MI PROYECTO, MAS COMPLICADA ES LA PROGRAMACION)

AGRADEZCO LA AYUDA PRESTADA.
  #2 (permalink)  
Antiguo 30/08/2005, 14:34
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
La sentencia es correcta, el error esta en otra parte. Entiendo lo que quieres hacer, pero deberias explicar con numeros por que está mal calculada la diferencia.
  #3 (permalink)  
Antiguo 30/08/2005, 15:10
Avatar de fatherjuan  
Fecha de Ingreso: mayo-2005
Ubicación: Estado de México
Mensajes: 132
Antigüedad: 19 años, 5 meses
Puntos: 0
ESTAS SON LAS ACCIONES QUE PIT A COMPRADO

SELECT compra_acciones.ticker, (Sum(compra_acciones.cant_acciones)) as total_acciones FROM compra_acciones where compra_acciones.user_name = 'pit' GROUP BY ticker;
+--------+----------------+
| ticker | total_acciones |
+--------+----------------+
| AMFBMX | 10 |
| CAFBMX | 20 |
| MTFBMX | 1013 |
| SLFBMX | 10 |
| TGFBMX | 10 |
| UGFBMX | 12 |
+--------+----------------+


DE ESAS ACCIONES HA VENDIDO LAS SIGUIENTES


SELECT ventas_acciones.ticker, (Sum(ventas_acciones.cant_acciones)) as total_acciones FROM ventas_acciones where ventas_acciones.user_name = 'pit' GROUP BY ticker;
+--------+----------------+
| ticker | total_acciones |
+--------+----------------+
| CAFBMX | 5 |
| MTFBMX | 13 |
+--------+----------------+

HICE ESTA SENTENCIA PARA CALCULAR LA DIFERENCIA ENTRE ACCIONES COMPRADAS Y VENDIDAS Y ASI OBTENER CUANTAS ACCIONES TENGO ACTUALAMENTE:

SELECT compra_acciones.ticker, (Sum(compra_acciones.cant_acciones) - Sum(ventas_acciones.cant_acciones) ) as total_acciones FROM compra_acciones INNER JOIN ventas_acciones ON compra_acciones.ticker = ventas_acciones.ticker where compra_acciones.user_name = 'pitsolana' GROUP BY ticker;
+--------+----------------+
| ticker | total_acciones |
+--------+----------------+
| AMFBMX | 9 |
| CAFBMX | 10 |
| MTFBMX | 1987 |
+--------+----------------+

PERO NO COINCIDEN, PUES DE AMFBMX DEBERIA ATENER 10 ACCIONES, MTFBMX 1000 DE CAFBMX 15, ETC.

Y SOLO TENGO ESTE RESULTADO:

SELECT compra_acciones.ticker, (Sum(compra_acciones.cant_acciones) - Sum(ventas_acciones.cant_acciones) ) as total_acciones FROM compra_acciones INNER JOIN ventas_acciones ON compra_acciones.ticker = ventas_acciones.ticker where compra_acciones.user_name = 'pitsolana' GROUP BY ticker;
+--------+----------------+
| ticker | total_acciones |
+--------+----------------+
| AMFBMX | 9 |
| CAFBMX | 10 |
| MTFBMX | 1987 |
+--------+----------------+
  #4 (permalink)  
Antiguo 30/08/2005, 15:19
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 22 años, 5 meses
Puntos: 1
Si usas INNER JOIN solo te mostrarà los q tengan id en comun...

si quieres q te coja las dos tablas enteras usa LEFT JOIN...

de todos modos no te garantizo q la suma funcione...es una consulta un tanto compleja

si puedo me creo 2 tablas de ejemplo y prebo..

ya postearé resultados.

Salu2.
  #5 (permalink)  
Antiguo 30/08/2005, 15:30
Avatar de fatherjuan  
Fecha de Ingreso: mayo-2005
Ubicación: Estado de México
Mensajes: 132
Antigüedad: 19 años, 5 meses
Puntos: 0
gracias lotus efectivamente me envia el resultado de los registros pero los que no tienen ventas aparecen como null, en php se puede hacer con una burbuja? sera muy complicado?
  #6 (permalink)  
Antiguo 30/08/2005, 15:50
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 22 años, 5 meses
Puntos: 1
HE estado mirando y me parece q como no hagas las consultas por separado y luego a traves de php compares los identificadores y restes las cantidades...

pq con la consulta q pones salen cosas rarisimas...

lo de la burbuja no se a q te refieres..solo conozco el algoritmo de ordenacion de la burbuja...

Salu2.
  #7 (permalink)  
Antiguo 30/08/2005, 15:59
Avatar de fatherjuan  
Fecha de Ingreso: mayo-2005
Ubicación: Estado de México
Mensajes: 132
Antigüedad: 19 años, 5 meses
Puntos: 0
Tienes Alguna Idea De Como Hacerlo?
  #8 (permalink)  
Antiguo 30/08/2005, 16:09
Avatar de fatherjuan  
Fecha de Ingreso: mayo-2005
Ubicación: Estado de México
Mensajes: 132
Antigüedad: 19 años, 5 meses
Puntos: 0
while($row = mysql_fetch_array($result))
{
$ticker_compras = $row['ticker'] ;
$total_compras = $row['cant_acciones'];
$query2 = "SELECT ticker, Sum(cant_acciones) AS cant_acciones FROM ventas_acciones where
user_name = 'pitsolana' and ticker = '$ticker_compras' GROUP BY ticker" ;


$result2 = mysql_query($query2, $db);
$row2 = mysql_fetch_array($result2);

echo ($total_compras - $row2['cant_acciones']) . "|" . $ticker_compras . "<br>";

}

Última edición por fatherjuan; 31/08/2005 a las 11:32 Razón: SOLUCION AL PROBLEMA
  #9 (permalink)  
Antiguo 30/08/2005, 16:10
Avatar de fatherjuan  
Fecha de Ingreso: mayo-2005
Ubicación: Estado de México
Mensajes: 132
Antigüedad: 19 años, 5 meses
Puntos: 0
De acuerdo

mas facil de lo que pensaba, gracias
  #10 (permalink)  
Antiguo 25/09/2005, 15:07
 
Fecha de Ingreso: abril-2005
Mensajes: 15
Antigüedad: 19 años, 7 meses
Puntos: 0
Tengo un problema parecido al querer sumar valores de dos tablas distintas.

Tengo dos tablas que almacenan un campo con las cantidades de visitas de diferentes archivos.

Lo que quiero hacer es sumar las visitas de la tabla 1, y luego a esa suma, sumarle la suma de las visitas de la tabla 2, je, nose si se entienda.

Pero para eso hice esta consulta:

Código:
SELECT (SUM(D.visitas) + SUM(M.visitas)) as visitas FROM stat_m_archivo M, stat_archivo D
Tan simple como eso, pero lo cierto es que el resultado que me trae no es la suma de los valores, es decir, si lo hago a mano me da otros valores, y nose porque sucede.

Por ejemplo, la suma de visitas deberia dar 27, ya que tengo 7 visitas en tabla 1, mas 20 visitas en tabla 2, pero da 1074.

Y nose porque si la consulta la dejo asi: (le saco el segundo SUM())

Código:
SELECT (SUM(D.visitas) + M.visitas) as visitas FROM stat_m_archivo M, stat_archivo D
Entonces ls suma me da 29, estoy mas cerca, pero no es correcto tampoco.

Espero me puedan ayudar.

Desde ya muchas gracias.
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 12:10.