Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/01/2017, 03:11
Avatar de el_javi
el_javi
 
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años
Puntos: 10
Consulta DQL "compleja"

Hola a todos.

Tengo la siguiente situación y necesito hacer una consulta, y no se cómo anidar subconsultas en DQL.

Tengo una tabla de usuarios.
Dentro de esa tabla hay Vendedores y Representantes.
Los vendedores tienen:
---- ID,
---- Nombre
---- Perfil (ROLE_REPRESENTATIVE, ROLE_SELLER)
---- Estado (1=DECLINE | 2 = ON_HOLD | 3 = APPROVED)

Ejemplo de Tabla Usuarios:

-----ID-----------Name------------------PROFILE------------STATUS----REPRESENTATIVE_ID----
------1--------Representante_1-------ROLE_REPRESENTATIVE--------3-----------NULL-----
------2--------seller_1--------------ROLE_SELLER-----------------3------------1-----
------3--------seller_2--------------ROLE_SELLER-----------------3------------1-----
------4--------seller_3--------------ROLE_SELLER-----------------2------------1-----
------5--------Representante_2-------ROLE_REPRESENTATIVE--------3-----------NULL-----
------6--------Representante_3-------ROLE_REPRESENTATIVE--------3-----------NULL-----
------7--------seller_4--------------ROLE_SELLER-----------------2------------5-----
------8--------seller_5--------------ROLE_SELLER-----------------2------------5-----
------9--------seller_6--------------ROLE_SELLER-----------------2------------5-----
-----10--------seller_7--------------ROLE_SELLER-----------------3------------1-----
-----11--------seller_8--------------ROLE_SELLER-----------------3------------1-----




Los vendedores tienen responsables (representatives) que es una relación 1-N entre Users y Users.

Entonces, necesito sacar todos los representantes (id + nombre) y el total de vendedores que no están aprobados (status = 2) (status = 2 = ON_HOLD)

Obtener Representantes

Código:
            SELECT representatives
            FROM AppBundle:User representatives 
            WHERE 
                representatives.profile = 'ROLE_REPRESENTATIVE' 
            GROUP BY representatives.id
            ORDER BY representatives.id DESC
Obtener los vendedores "pendientes" de aprobar

Código:
            SELECT sellers
            FROM AppBundle:User sellers 
            WHERE 
                sellers.profile = 'ROLE_SELLER' AND 
                sellers.status = 2
            GROUP BY sellers.id
            ORDER BY sellers.id DESC
Finalmente me queda saber cómo combinar esto para sacar:

-----ID-----------Nombre---------------TotalVendedoresPendientesAprobar----
------1--------Representante_1----------------------------40-----------------
------5--------Representante_2----------------------------27-----------------
------6--------Representante_3----------------------------12-----------------

¿Cómo se podría hacer esta consulta en 1 sola?

Última edición por el_javi; 10/01/2017 a las 04:05