Salve a tutti penso di commettere un banale errore di sintassi in questa query.
Ho una tabella MYSQL fatta in questo modo che si chiama SERVIZI:
ID_CLIENTE (KEY)
TIPO_SERVIZIO
COSTO
DATA (KEY)
ORA (KEY)
Mentre ho un altra tabella molto simile chiamata acquisti:
ID_CLIENTE (KEY)
PRODOTTO
COSTO
DATA (KEY)
ORA (KEY)
Vorrei estrarre da una e dall'altra tabella il numero di passaggi giornalieri dei clienti:
un cliente puo' essere registrato perche ha effettuato un servizio, perchè ha acquistato un prodotto o perchè ha effettuato entrambi.
Con la query:
Codice PHP:
SELECT count(DISTINCT data,ora) AS tot_passaggi FROM servizi WHERE data > '$datai' AND data < '$dataf' GROUP BY id_cliente ORDER BY count(*) DESC,SUM(costo) DESC
Prelevo i passaggi dei clienti che hanno effettuato un servizio tra due date fissate $datai e $dataf.
Stessa cosa per gli acquisti:
Codice PHP:
SELECT count(DISTINCT data,ora) AS tot_passaggi FROM acquisti WHERE data > '$datai' AND data < '$dataf' GROUP BY id_cliente ORDER BY count(*) DESC,SUM(costo) DESC
Il problema sorge quando un cliente ha effettuato sia un acquisto e contemporaneamente un servizio. Effettuando la somma delle due query precedenti il risultato sarebbe falsato poichè mi darebbe 2 passaggi quando un cliente ne ha effettuato 1. Ho pensato di sottrarre alla somma delle due query il risultato di questa query (ossia tutti i clienti che hanno effettuato un acquisto e contemporaneamente un servizio in modo da ottenere il risultato esatto)
Codice PHP:
mysql_num_rows(mysql_query("SELECT id_cliente, data AS d, ora AS o FROM acquisti WHERE data > '$datai' AND data < '$dataf' AND id_cliente IN (SELECT id_cliente FROM servizi WHERE data = 'd' AND ora = 'o')"))
Tuttavia penso di commettere qualche errore di sintassi poichè il risultato è sempre 0.
Grazie