none
Subconsultas sql RRS feed

  • Pregunta

  • como podria hacer con subconsultas, me pide un problema mostrar el nombre de un demandante con su descripcion de y la empresa que solicita, eh realizado la sig consulta, pero quisiera saber con hacer con subconsultas:

    Mi base es la siguiente:

    GRACIAS!

    domingo, 21 de agosto de 2016 1:56

Respuestas

  • Dave Hdez,

    Si no tienes claro el problema no vas a saber como iniciar su resolución, no le veo sentido el ejercicio, incluso para un tema de aprendizaje no es la manera adecuada de aprender sub-consultas, casos de aplicación, tipos y rendimiento. Analiza las sub-consultas que te adjunto (has las correctivas en caso sea necesario):

    SELECT
    	d.Nombre,
    	t.Descripcion,
    	t.Nombre
    FROM
    	Demandantes d
    	INNER JOIN
    	(
    		SELECT			
    			pd.RFC, p.Descripcion, e.Nombre
    		FROM
    			PerfilDemandante pd ON (d.RFC = pd.RFC)
    			INNER JOIN Perfil p ON (pd.Codigo = p.Codigo)
    			INNER JOIN SolicitaPerfil sp ON (p.Codigo = sp.Codigo)
    			INNER JOIN EmpresaCliente e ON (sp.CodigoCliente = e.CodigoC)
    		WHERE
    			(p.Descripcion = 'Admin base de datos')
    	) t ON (d.RFC = t.RFC)
    GROUP BY
    	d.Nombre,
    	t.Descripcion,
    	t.Nombre;
    

    SELECT
    	d.Nombre,
    	(
    		SELECT	
    			p.Descripcion
    		FROM
    			PerfilDemandante pd
    			INNER JOIN Perfil p ON (pd.Codigo = p.Codigo)
    		WHERE						
    			(d.RFC = pd.RFC)
    			AND (p.Descripcion = 'Admin base de datos')
    	),
    	(
    		SELECT	
    			e.Nombre
    		FROM
    			PerfilDemandante pd
    			INNER JOIN Perfil p ON (pd.Codigo = p.Codigo)
    			INNER JOIN SolicitaPerfil sp ON (p.Codigo = sp.Codigo)
    			INNER JOIN EmpresaCliente e ON (sp.CodigoCliente = e.CodigoC)
    		WHERE						
    			(d.RFC = pd.RFC)
    			AND (p.Descripcion = 'Admin base de datos')
    	)
    FROM
    	Demandantes d;



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Dave Hdez lunes, 22 de agosto de 2016 2:36
    domingo, 21 de agosto de 2016 3:00

Todas las respuestas

  • Dave Hdez,

    No entiendo lo que requieres:

    1. ¿Sub-consulta en la lista de selección <SELECT>? ¿Para qué columnas?
    2. ¿Sub-consulta en la lista de tablas <FROM>?

    Por otro lado, ¿cuál es la necesidad de implementar sub-consultas? Bajo la forma que has desarrollado (combinando filas - JOIN) es lo correcto.

    Esperamos tus comentarios.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 21 de agosto de 2016 2:32
  • Bueno, el ejercicio, que me ha dejado el profesor,  me describe que tengo que mostrar mediante subconsultas.

    No se si primero mostraria la empresa que necesita el tipo de trabajador, y despues mostrar el nombre.

    domingo, 21 de agosto de 2016 2:40
  • Dave Hdez,

    Si no tienes claro el problema no vas a saber como iniciar su resolución, no le veo sentido el ejercicio, incluso para un tema de aprendizaje no es la manera adecuada de aprender sub-consultas, casos de aplicación, tipos y rendimiento. Analiza las sub-consultas que te adjunto (has las correctivas en caso sea necesario):

    SELECT
    	d.Nombre,
    	t.Descripcion,
    	t.Nombre
    FROM
    	Demandantes d
    	INNER JOIN
    	(
    		SELECT			
    			pd.RFC, p.Descripcion, e.Nombre
    		FROM
    			PerfilDemandante pd ON (d.RFC = pd.RFC)
    			INNER JOIN Perfil p ON (pd.Codigo = p.Codigo)
    			INNER JOIN SolicitaPerfil sp ON (p.Codigo = sp.Codigo)
    			INNER JOIN EmpresaCliente e ON (sp.CodigoCliente = e.CodigoC)
    		WHERE
    			(p.Descripcion = 'Admin base de datos')
    	) t ON (d.RFC = t.RFC)
    GROUP BY
    	d.Nombre,
    	t.Descripcion,
    	t.Nombre;
    

    SELECT
    	d.Nombre,
    	(
    		SELECT	
    			p.Descripcion
    		FROM
    			PerfilDemandante pd
    			INNER JOIN Perfil p ON (pd.Codigo = p.Codigo)
    		WHERE						
    			(d.RFC = pd.RFC)
    			AND (p.Descripcion = 'Admin base de datos')
    	),
    	(
    		SELECT	
    			e.Nombre
    		FROM
    			PerfilDemandante pd
    			INNER JOIN Perfil p ON (pd.Codigo = p.Codigo)
    			INNER JOIN SolicitaPerfil sp ON (p.Codigo = sp.Codigo)
    			INNER JOIN EmpresaCliente e ON (sp.CodigoCliente = e.CodigoC)
    		WHERE						
    			(d.RFC = pd.RFC)
    			AND (p.Descripcion = 'Admin base de datos')
    	)
    FROM
    	Demandantes d;



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Dave Hdez lunes, 22 de agosto de 2016 2:36
    domingo, 21 de agosto de 2016 3:00