MySQL - Consulta SQL

   
Vista:

Consulta SQL

Publicado por Juan Carlos jccol@hotmail.com (7 intervenciones) el 10/06/2015 17:22:25
Hola a todos,

Tengo la tabla Facturas y la tabla PagoFactura donde se registran las formas de pago de la factura que pueden ser varias, la relación es se uno a muchos.

Dado lo anterior, una factura se puedes pagar con efectivo, tarjeta de credito y otras formas, tambien se puede pagar solo con una forma de pago por ejemplo efectivo.

Necesito seleccionar las facturas que se han pagado solo en efectivo y ninguna otra forma o sea que a Facturas le corresponde solo un registro en PagoFactura

Y el caso contrario, todas las facturas que se han pagado de otras formas pero no solo en efectivo o sea en PagoFactura no esta el registro Efectivo

Gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta SQL

Publicado por Diego (10 intervenciones) el 10/06/2015 18:31:13
no entiendo la relación uno a muchos entre la tabla facturas y la tabla pagoFacturas, se supone que una factura debe ser pagada una sola vez y con un solo método de pago, de todas maneras aquí te dejo esta sentencia que puede servir de base.

SELECT A.idfactura,A.fechafactura,A.idmetodopago,B.nombremetodopago from facturas A, pagoFactura B where A.idmetodopago = 1 group by A.idfactura.

donde 1 es el codigo de me todo en este caso yo asumo que efectivo es codigo 1


para que traiga todos diferentes a efectivo entonces solo se debe cambiar el operador

SELECT A.idfactura,A.fechafactura,A.idmetodopago,B.nombremetodopago from facturas A, pagoFactura B where A.idmetodopago != 1 group by A.idfactura.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta SQL

Publicado por Juan Carlos jccol@hotmail.com (7 intervenciones) el 10/06/2015 18:45:34
Te explico

Caso 1

Una factura vale $100, entonces el cliente decide que va apagar 40 en efectivo 30 con tarjeta de credito y 30 con cheque

Caso 2

El mismo cliente decide pagat la factura solo en efectivo, es decir $100 en efectivo

Las facruras q necesito son las del caso 2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta SQL

Publicado por leonardo_josue (81 intervenciones) el 10/06/2015 21:54:06
Hola Juan Carlos:

No nos dices cuál es la estructura de tus tablas ni nos pones datos de ejemplo, tampoco mencionas con qué BD's estás trabajando por lo tanto es bastante complicado darte una respuesta puntual... sin embargo de acuerdo a lo que planteas, tienes varias formas de obtener el resultado que esperas.

1. agrupando los registros que hay en tu tabla de pagos para cada factura y seleccionar sólo aquellos que tengan un solo registro. (esto lo logras con trabajando con COUNT, GROUP BY Y CON HAVING).

2. filtrando las facturas que NO TENGAN REGISTROS en la tabla de pagos con tipos de tarjeta de crédito o cheques. Esto lo puedes hacer simplemente con un NOT IN o con NOT EXISTS

3. hacer un LEFT JOIN hacia la tabla de pagos, seleccionando sólo aquellos registros que tengan pagos en efectivo.

Trata de hacer cualquiera de ellas, si continuas con problemas postea lo que tratarte de hacer y la problemática que tienes. Incluye como te comenté al inicio la estructura de tus tablas, datos de ejemplo y los datos de la BD's que estás utilizando, (motor, versión y/o edición).

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar