Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/04/2012, 09:50
computer_si
 
Fecha de Ingreso: febrero-2011
Mensajes: 85
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Consulta selectiva

Gracias Leonardo_josue, modifique el codigo y ya funciona:

include 'conexion.php';
$link = conectar();

//$sql="SELECT f.regId, f.ref, f.tipMov, f.imp FROM cuentas AS f LEFT JOIN (SELECT t.regId reg1, t.regId reg2, t.ref, t.tipMov, t.imp FROM cuentas AS t LEFT JOIN (SELECT * FROM cuentas) AS c ON (t.ref = c.ref ) WHERE (t.tipMov ='1' and c.tipMov = '2') AND (t.imp = c.imp)) AS t ON f.regId = t.reg1 OR f.regId = t.reg2 WHERE t.reg1 IS null and t.reg2 IS null ORDER BY f.regId ASC";

$sql="SELECT * FROM cuentas T1 WHERE(T1.tipMov = '1' AND NOT EXISTS (SELECT ref, imp, tipMov FROM cuentas T2 WHERE T1.ref = T2.ref AND T1.imp = T2.imp AND T2.tipMov = '2'))";

$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_row($result);
if($row < 0){
echo "! ! No selecciono nada! !";
}else{
echo $row[0].'--'.$row[1].'--'.$row[2].'--'.$row[3].'<br>';
while($row=mysql_fetch_array($result)) {
echo $row[0].'--'.$row[1].'--'.$row[2].'--'.$row[3].'<br>';
}
}
desconectar();

Referente a lo que comentas del tipo de negocio, tomare en cuenta la segunda consulta, pero siempre va a existir primero el tipo de movimiento "1", ahora la siguiente problematica es cuando el tipo de movimiento es dos pero el importe no corresponde esto es tomando en cuenta la tabla anterior de la siguiente manera:

+------+------+------+---------+
| reg | ref |tipMov | imp |
+------+------+------+---------+
| 1 | A1 | 1 | 500.00 |
| 2 | A2 | 1 | 200.00 |
| 3 | A3 | 1 | 300.00 |
| 4 | A4 | 1 | 500.00 |
| 5 | A5 | 1 | 4500.00 |
| 6 | A1 | 2 | 500.00 |
| 7 | A6 | 1 | 500.00 |
| 8 | A5 | 2 | 500.00 |
| 9 | A5 | 2 | 2500.00 |
| 10 | A5 | 2 | 500.00 |
+------+------+------+---------+

En este caso deberia de mostrarme igual los registros 2,3,4,7 y el 5 pero con un importe de 1000, ya que la suma de los registros 8,9,10 es igual a 3500.

Otra pregunta, sabes porque cuando entro al while, y envio el echo de los registros siempre me envia desde el segundo.

Se podra hacer esto, saludos y gracias anticipadas.