Selects anidados en MySQL

¿Es posible realizar selects anidados en MySQL? Porque me han dicho que no se puede en esta base de datos.

La FAQ Selects anidados en MySQL tiene

Pertenece a la categoría:
Pregunta
¿Es posible realizar selects anidados en MySQL?


Porque me han dicho que no se puede en esta base de datos.
Respuesta de Miguel Angel Alvarez
En alguna versión antigua de Mysql recuerdo que no se podían hacer selects anidados... ahora no te sé decir qué versión, pero era una antigua.



En Mysql 4.1.10 ya se pueden hacer consultas con selects anidados en MySQL. Por ejemplo, te paso esta sentencia SQL para que veas cómo hacer la consulta con selects anidados.



SELECT * FROM cliente


WHERE id_tipo IS NOT NULL


AND id_cliente NOT IN (


SELECT id_cliente


FROM cliente_deudor


WHERE deuda > 1000


)

Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

Gerardo M Lopez Fernandez

06/11/2007
Hola,

Solo comentar que compañeros de la oficina, se han encontrado grandes problemas de rendimiento con las selects anidadas en MySQL, por lo que recomiendo actuar con tiento.

Saludos

Xosé

06/11/2007
La utilización de Select anidados, no es aconsejable, ya que implica una mayor carga en el servidor. Recomiendo utilizar INNER JOIN o select independientes.

Erasmo Garcia Arenas

06/11/2007
Definitivamente se recomienda hacer consultas anidadas con JOIN, ya que es menos carga para el servidor, aqui te pongo un ejemplo de ventas por vendedor por marca:

SELECT
prods.marca,
vends.nombre,
ventas.vend,
partvta.articulo,
prods.descrip As `Descripción`,
FROM (((partvta LEFT JOIN ventas ON ventas.venta = partvta.venta) INNER JOIN prods ON partvta.articulo = prods.articulo) INNER JOIN marcas ON prods.marca = marcas.marca) INNER JOIN vends ON vends.vend = ventas.vend
WHERE ventas.estado = 'CO' AND (ventas.tipo_doc = 'FAC' Or ventas.tipo_doc = 'DV' Or ventas.tipo_doc = 'REM') AND ventas.cierre = 0
AND ventas.f_emision >= "ParamData.FechaInicial" AND ventas.f_emision <= "ParamData.FechaFinal" )
GROUP BY partvta.articulo
ORDER BY ventas.vend, marcas.marca, prods.descrip

Pakbron

14/11/2009
Select anidado
el select anidado bien hecho es un join...

select dato from tabla where dato2 in (select dato2 from tabla2);
FAQ relacionadas

Para ver más FAQ relacionadas accede a las categorías:

Volver al árbol de categoríasVolver al árbol de categorías