Ok, sò che viene eseguita prima la subquery e poi la outer, la subquery è totalmente indipendende dalla outer e non può utilizzare valori della stessa.
Quindi il mio problema, ho 3 semplici tabelle:
E voglio elaborare una queyr che mi restituisca l'elenco dei clienti, il numero totale di ordini che hanno e la somma degli oggetti di tutti gli ordini.. insomma il totale completo...CREATE TABLE customer (
id serial NOT NULL,
name character(50)
);
CREATE TABLE p_orders (
id serial NOT NULL,
id_customer integer NOT NULL,
date date DEFAULT now(),
code character(5)
);
CREATE TABLE p_items (
id serial NOT NULL,
id_order integer NOT NULL,
descr character(250),
price money
);
Da qui le mie domande:
1. E' possibile farlo con una sola query (e subquery), o devo farne due distinte, magari appoggiarmi a una vista;
2. Conviene in generale (mantenibilità del codice, velocità della query risultante, ecc..) fare un'unica query, o conviene farne due?
La query che uso io è:
che funziona, ma riporta solo il numero di ordini totale per cliente.. la subquery commentata fallisce miseramente.Codice PHP:
SELECT
customer.id AS id_cliente,
customer.name,
COUNT(p_orders.id) AS num_orders
--, (
--SELECT
-- SUM(price)
--FROM
-- p_items
-- INNER JOIN p_orders ON (p_items.id_order = p_orders.id)
-- INNER JOIN customer ON (customer.id = p_orders.id_customer)
--WHERE customer.id = id_cliente
--) AS total_money
FROM
customer
INNER JOIN p_orders ON (p_orders.id_customer = customer.id)
GROUP BY
customer.id,
customer.name,
p_orders.id_customer
Idee?
p.s: se può servire, lavoro su postgres.. ma dovrebbe essere un problema di puro sql