subqueries
WHERE
.where x =,<,> (subquery)
where x IN (subquery)
Ejemplo de subquery con 1 resultado y el signo de comparación >
, como se puede observar el subquery regresará siempre 1 resultado por lo que se pueden utilizar cualquiera de los símbolos de comparación:
SELECT * FROM neworder
WHERE advance_amount <
(SELECT MAX(advance_amount) FROM orders);
Ejemplo 2:
SELECT agent_name, agent_code, phone_no
FROM agents
WHERE agent_code =
(SELECT agent_code
FROM agents
WHERE agent_name = 'Alex');
Multiple row subquery returns one or more rows to the outer SQL statement. You may use the IN, ANY, or ALL operator in outer query to handle a subquery that returns multiple rows.
SELECT ord_num,ord_amount,ord_date,
cust_code, agent_code
FROM orders
WHERE agent_code IN(
SELECT agent_code FROM agents
WHERE working_area='Bangalore');
You may place a subquery in the FROM clause of an outer query. These types of subqueries are also known is inline views because the subquery provides data inline with the FROM clause -
SELECT item_id
FROM
(SELECT item_id
FROM FOODS
WHERE item_id<4)
-- El siguiente query muestra cómo es posible hacer joins entre subconsultas
select q1.p_id_pollster,count from (
-- el query representa una tabla: obtener los encuestadores asignados a los canales de la encuesta.
select p_id_pollster from ch_pollster where c_id_ch in (
select id_ch from channel where s_id_survey=2
)
) as q1 left outer join (
-- el query representa una tabla: obtener la producción de los encuestadores de cierta encuesta.
select p_id_pollster, count(*) from s_applied sa
where s_id_survey=2 group by p_id_pollster
) as q2 on q1.p_id_pollster = q2.p_id_pollster