Subconsultas en Mysql!!!!, No se pueden hacer???, ayuda porfa!!!!!

Christian Duarte
28 de Octubre del 2003
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!!!!

mdomingu
28 de Octubre del 2003
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.