Php-sql, comprobar si una venta tiene o no tiene factura en dos tablas diferente
Llevo 4 días atascado en algo que no consigo resolver,
Tenemos 2 tablas
ventas (id_venta,id_cliente,total,fecha,id_vendedor)
Facturas(id_factura, neto, iva, total, estado, id_venta, fecha)
Hay más tablas, pero esas son las usadas para hacer esto concretamente
La idea es la siguiente primero mostramos todos los campos de la tabla ventas en html (esto no genera problemas)
Posteriormente generamos la venta y posteriormente la factura, al generar la venta la inserción va en la tabla ventas y al generar la factura la inserción va en la tabla facturas
Esto no es secuencial se puede hacer en cualquier momento, pero el problema viene aquí, cuando mostramos al principio todos los campos de la tabla ventas hay uno en el que tiene que poner si hay o no hay factura para esa venta
La idea es que compruebe si el campo id_venta es igual en las dos tablas, si es que existe en la tabla facturas,
el resultado debería ser 0 en caso de que no haya o 1 en caso de que haya factura para la venta.
Esto se esta haciendo con php pdo, yo haciendo lo mismo no consigo que me funcione correctamente.
Estos son mis métodos
Código: [Seleccionar]
public function listaVentas()
{
self::setNames();
$sql="select ventas.id_venta as ventasidventa,
destinatario_factura.nombre as nombre_destinatario,
Vendedores.nombre as nombre_vendedor,
Clientes.nombre as nombre_cliente,
Total,
Concat_ws('-', day(ventas. Fecha), month(ventas. Fecha), year(ventas. Fecha)) as fecha,
Concat_ws(':', hour(ventas. Fecha), minute(ventas. Fecha)) as hora
from
destinatario_factura,vendedores,ventas,clientes
where
destinatario_factura.id_destinatario_factura=ventas.id_destinatario and
clientes.id_cliente=ventas.id_cliente and
vendedores.id_vendedor=ventas.id_vendedor";
foreach ($this->conexion->query($sql) as $reg)
{
$this->personas[]=$reg;
}
return $this->personas;
$this->conexion=null;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public function compruebaExisteFactura($id)
{
self::setNames();
$sql="select *
from
factura
where
id_venta=?";
$stmt=$this->dbh->prepare($sql);
if($stmt->execute( array($id) ) )
{
while($row = $stmt->fetch())
{
$this->factura[]=$row;
}
return $this->factura;
$this->conexion=null;
}
}
}
y asi lo llamo desde otro documento
Código: [Seleccionar]
$trabajoinstan= new Trabajo();
$listandoventas=$trabajoinstan->listaVentas();
for ($i = 0; $i < count($listandoventas); $i++)
{
$existefactura=$trabajoinstan->compruebaExisteFactura($listandoventas[$i]["ventasidventa"]);
}
Pienso que si es problema de la sentencia sql, serian dos sentencias y el resultado de una, se usaría como argumento de la otra, pienso que es así, no obstante si hay algún modo más sencillo de hacerlo lo agradecería