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

Consultas con más de una tabla... AYUDA POR FAVORR!!!

Estas en el tema de Consultas con más de una tabla... AYUDA POR FAVORR!!! en el foro de Mysql en Foros del Web. Buenas!!!! tengo en mi BD dos tablas, en una de ellas (Tabla "FACTURAS_REMOVIDAS") tengo los registros de las "facturas" que fueron eliminadas por el sistema ...
  #1 (permalink)  
Antiguo 05/03/2010, 17:39
 
Fecha de Ingreso: febrero-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Consultas con más de una tabla... AYUDA POR FAVORR!!!

Buenas!!!! tengo en mi BD dos tablas, en una de ellas (Tabla "FACTURAS_REMOVIDAS") tengo los registros de las "facturas" que fueron eliminadas por el sistema que hice (xD), con los campos: idFACTURA_REMOVIDA, FECHA_REMOVIDO,HORA_REMOVIDO..
.. En ella tengo solo un registro de una factura Removida..

Quiero hacer un Filtro de todos los registros (Facturas) de la tabla "FACTURACION" que NO se encuentren en la tabla "FACTURAS_REMOVIDAS".. Para ello "Divagué" :S el siguiente código..

select distinct IDFACTURACION,MONTO_FACTU,FECHA_ALTA,HORA_ALTA

from FACTURAS_REMOVIDAS,FACTURACION

WHERE
FACTURAS_REMOVIDAS.IDFACTURA_REMOVIDA <> FACTURACION.IDFACTURACION

.. Usé el DISTINCT para que me eliminara los registros duplicados.. Antes de que lo utilizara me traía todos los registros de a DOS! A excepción de el registro (ÚNICO) que se encuentra en la Tabla "FACTURAS_REMOVIDAS"... Pero como DISTINCT solo elimina los registros repetidos sigo teniendo como resultado ese registro...

Por favor me pueden ayudaaaaaaaaar!!!.. Muchas Gracias!!!! :') Estoy empezando en esto.. Y la verdad que ya busqué mucho..!! :/..
Muchas Gracias!!!
  #2 (permalink)  
Antiguo 05/03/2010, 17:56
Avatar de danideu  
Fecha de Ingreso: febrero-2005
Ubicación: Barcelona
Mensajes: 213
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: Consultas con más de una tabla... AYUDA POR FAVORR!!!

Puede que te sea util la instrucción GROUP BY ...
  #3 (permalink)  
Antiguo 06/03/2010, 12:42
 
Fecha de Ingreso: febrero-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Consultas con más de una tabla... AYUDA POR FAVORR!!!

Me dices para hacer en dos consultas?..

Pero existe un método para hacer este filtro en mysql? Yo puedo hacer el filtro en java trayendo todos los registros de la tabla FACTURAS_REMOVIDAS y compararlo por id`s en la tabla FACTURACION en un bucle FOR.. Pero esto sería muy tedioso.. Sin embargo, solo quería saber si existía algún metodo o funcion de MYSQL para comparar directamente dos campos de dos tablas que contienen los mismos valores y realizar el filtro con mucho menos código.. Yo acabo de terminar el básico y la verdad que solo nos enseñaron ABM.. -.- . Ya busqué muchisimo....(muchisimO) en google.. Sin encontrar algo que me funcione para el problema que tengo.. Probé con una funcion (INNER JOIN) pero no me funcionó.. Fue ahi que decidí entrar en algún foro para que me echaran una mano :) .Será que me podrían dar un ejemplo por favor!.. Necesito terminar el sistema que empecé hace dos meses, realmente para mi es un desafío muy grande lo que estoy haciendo.. Y es por necesidad.. Mil gracias por la ayuda que me brinden!!!!!!!..
  #4 (permalink)  
Antiguo 06/03/2010, 13:43
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: Consultas con más de una tabla... AYUDA POR FAVORR!!!

Hay varias formas de hacerlo, porque el problema es en realidad bastante sencillo: Tienes una tabla B con la misma estructura de la A que contiene los datos que se eliminaron de A.
Bien, hay dos formas básicas:
- Usar un LEFT JOIN entre A y B que te devuelva los registros de A que devuelven NULL en B.
- Usar una subconsulta con NOT IN en el WHERE.

Código MySQL:
Ver original
  1. SELECT F.idfacturacion, F.monto_factu, F.fecha_alta, F.hora_alta
  2. FROM facturacion F LEFT JOIN facturas_removidas R USING(idfacturacion)
  3. WHERE R.idfacturacion IS NULL;

o bien:

Código MySQL:
Ver original
  1. SELECT idfacturacion, monto_factu, fecha_alta, hora_alta
  2. FROM facturacion
  3. WHERE idfacturacion NOT IN (SELECT idfacturacion FROM facturas_removidas);
Todo el resto son variaciones de este mismo concepto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/03/2010, 10:08
 
Fecha de Ingreso: febrero-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Consultas con más de una tabla... AYUDA POR FAVORR!!!

Muchas Gracias gnzsoloyo ..!! Funciona Perfecto!:) , y perdon por este tipo de preguntas, la verdad que ya estaba necesitando demasiado una solución, y como ya busqué mucho^n y no encontraba no me quedó de otra.. jeje.. Tienes
algún tutorial que me recomiendes?!. Me encantaría no solo crear nuevos temas si no alguna vez también poder ayudar a algunos que otros novatos como yo (:

Muchas gracias!!!!!!

Saludos desde Paraguay..
------------------------------------------
  #6 (permalink)  
Antiguo 16/04/2010, 08:00
 
Fecha de Ingreso: febrero-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Consultas con más de una tabla... AYUDA POR FAVORR!!!

Buenas!!

Quisiera hacer una consulta...

Estoy intentando hacer consulta en mysql donde junto dos tablas.. La consulta es la siguiente:

mysql> use bodega
Database changed
mysql> SELECT F.fecha_alta,F.total_iva_5,F.total_iva_10,SUM(F.mo nto_factu),(SUM(
M.descuento)) FROM facturacion F LEFT JOIN mercad_factu M USING (idfacturacion)
WHERE F.fecha_alta>='2010-04-01' AND F.fecha_alta<='2010-04-30' AND M.idfacturacion IS NOT NULL GROUP BY F.fecha_alta;
+------------+-------------+--------------+--------------------+----------------
----+
| fecha_alta | total_iva_5 | total_iva_10 | SUM(F.monto_factu) | (SUM(M.descuent
o)) |
+------------+-------------+--------------+--------------------+----------------
----+
| 2010-04-01 | 0 | 817 | 10249100 | 366
500 |
| 2010-04-02 | 0 | 2.045 | 9853400 | 580
300 |
| 2010-04-03 | 0 | 2.499 | 13691655 | 576
000 |
| 2010-04-04 | 0 | 1.772 | 5949400 | 279
000 |
| 2010-04-05 | 0 | 227 | 1462600 | 14
000 |
| 2010-04-06 | 0 | 545 | 461000 | 63
000 |
+------------+-------------+--------------+--------------------+----------------
----+
6 rows in set (0.02 sec)

de modo que quiero hacer una suma del total facturado por dia y tb el total descontado por dia!.. Pero da el caso de que esa suma total ESTA mal D': ..

Eso lo comprobé haciendo la suma sin unir las tablas, Solo de la tabla facturacion.: asi:

mysql> use bodega
Database changed
mysql> SELECT fecha_alta,SUM(monto_factu),total_iva_5,total_iva_ 10 FROM facturac
ion WHERE fecha_alta>='2010-04-01' AND fecha_alta<='2010-04-30' GROUP BY fecha_a
lta;
+------------+------------------+-------------+--------------+
| fecha_alta | SUM(monto_factu) | total_iva_5 | total_iva_10 |
+------------+------------------+-------------+--------------+
| 2010-04-01 | 3865200 | 0 | 817 |
| 2010-04-02 | 4624500 | 0 | 2.045 |
| 2010-04-03 | 4922191 | 0 | 2.499 |
| 2010-04-04 | 2847600 | 0 | 1.772 |
| 2010-04-05 | 499300 | 0 | 227 |
| 2010-04-06 | 228000 | 0 | 545 |
+------------+------------------+-------------+--------------+
6 rows in set (0.00 sec)

Aqui podemos ver la diferencia de la suma por dia! ..
Por favor les pido que me echen una mano, ya intente muchisimo y me sigue sumando mal.. no se como hacer la suma correcta utilizando dos tablas!..

Muchas desde ya! Un abrazo..

Saludos!

Etiquetas: 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 09:34.