Subconsultas en Mysql!!!!, No se pueden hacer???, ayuda porfa!!!!!
Quisiera que alguien me ayudara, no pude hacer realizar esta consulta en mysql, me enteré que mysql no soporta subconsultas.
Como puedo hacerla????
SELECT * FROM clientes WHERE idcliente NOT IN
(SELECT idcliente FROM deudas WHERE monto > 50000);
Gracias!!!!
Como puedo hacerla????
SELECT * FROM clientes WHERE idcliente NOT IN
(SELECT idcliente FROM deudas WHERE monto > 50000);
Gracias!!!!
MySQL todavia no permite en las versiones actuales, el empleo de subconsultas. Recien esta pautado para la version 5.
Igualmente la consulta que estas intentando hacer se puede resolver, y de manera mas eficiente con un LEFT JOIN.
Esto es
SELECT * FROM clientes c LEFT JOIN deudas d
ON c.idCliente = d.idCliente
WHERE d.idCliente IS NULL AND d.monto > 500000.
El LEFT JOIN devuelve todos los registros de la tabla que esta a la izquierda (Clientes en este caso) y en la tabla que esta a la derecha, si hay join completa los campos con el valor correspondiente y si no deja los campos en valor NULL. Por lo tanto todos los registros de deuda que tengan el valor NULL no estan en la tabla Clientes (obvio, ya que no hay forma de Hacer un JOIN)
Si trabajas con otros motores de Bases de Datos como ORACLE o DB2 tampoco es recomendable el uso del "NOT IN" dado que consume demasiado en terminos de performance. Si quieres extender mas consulta sobre LEFT JOIN, RIGHT JOIN, OUTER JOIN y FULL OUTER JOIN.
Igualmente la consulta que estas intentando hacer se puede resolver, y de manera mas eficiente con un LEFT JOIN.
Esto es
SELECT * FROM clientes c LEFT JOIN deudas d
ON c.idCliente = d.idCliente
WHERE d.idCliente IS NULL AND d.monto > 500000.
El LEFT JOIN devuelve todos los registros de la tabla que esta a la izquierda (Clientes en este caso) y en la tabla que esta a la derecha, si hay join completa los campos con el valor correspondiente y si no deja los campos en valor NULL. Por lo tanto todos los registros de deuda que tengan el valor NULL no estan en la tabla Clientes (obvio, ya que no hay forma de Hacer un JOIN)
Si trabajas con otros motores de Bases de Datos como ORACLE o DB2 tampoco es recomendable el uso del "NOT IN" dado que consume demasiado en terminos de performance. Si quieres extender mas consulta sobre LEFT JOIN, RIGHT JOIN, OUTER JOIN y FULL OUTER JOIN.
