Query PHP My sql

  • Creatore Discussione Creatore Discussione san1968
  • Data di inizio Data di inizio
mmmmmm


ma posso mettere la variabile che mi indichi il range di data ?


where data >= '2009-08-01' and data <='2009-08-31'");
 
Vabbè, mi basta il pensiero...
Certo che come query è un po' spessa, tutto perchè mysql non supporta il FULL OUTER JOIN e bisogna simularlo con la UNION, però il suo sporco lavoro lo fà... :mavieni:
 
Certamente:

Codice:
(
 SELECT 
  COALESCE(chiusa.data, errata.data) AS data,
  COALESCE(chiusi,0) AS chiusi,
  COALESCE(errati,0) AS errati
 FROM 
 (
  SELECT data, COUNT(*) AS chiusi
  FROM utenti_ebay WHERE stato = 'Chiuso'
  AND data >= '$data_inizio' AND data <= '$data_fine'
  GROUP BY data ORDER BY data
 ) AS chiusa 
 LEFT OUTER JOIN 
 (
  SELECT data, COUNT(*) AS errati
  FROM utenti_ebay WHERE stato = 'Numero errato'
  GROUP BY data ORDER BY data
 ) AS errata 
 ON chiusa.data = errata.data
)
UNION ALL
(
 SELECT
  COALESCE(chiusa.data,errata.data) AS data,
  COALESCE(chiusi,0) AS chiusi,
  COALESCE(errati,0) AS errati
 FROM 
 (
  SELECT data, COUNT(*) AS chiusi
  FROM utenti_ebay WHERE stato = 'Chiuso'
  GROUP BY data ORDER BY data
 ) AS chiusa 
 RIGHT OUTER JOIN 
 (
  SELECT data, COUNT(*) AS errati
  FROM utenti_ebay WHERE stato = 'Numero errato'
  AND data >= '$data_inizio' AND data <= '$data_fine'
  GROUP BY data ORDER BY data
 ) AS errata 
 ON chiusa.data = errata.data
 WHERE chiusa.data IS NULL
)
 
Un'ultima cosa per chiudere in BELLEZZA TROGO !!!

Se io avessi necessità in futuro di aggiungere la ricerca di un nuovo stato ?

Per adesso abbiamo cercato "chiuso" , "numero errato" .... se volessi cercare ancora un nuovo esito per esempio "inviata mail" ....

è difficile ? occorre creare una nuova query o basta aggiungere un "blocco" a quella già creata?

LO SO CHE ROMPO ..... :dipser::elvis:
 
cavolo ho visto i pdf e credevo fosse qualcosa di generale....

sei andato nello specifico del mio caso in modo meraviglioso.

tu sei un caso unico al mondo per dedizione e professionalità :)

veramente grazie mille
 
ma mi chiedevo...

il nome della vista come lo definisco?

cioè per esempio nella prima query tu mi dici che si chiama vista:chiuso. questa vista l'andrò poi a richiamare nella successiva query.

quindi :

Nome Vista: chiuso
SELECT data, COUNT(*) AS chiusi
FROM utenti_ebay
WHERE stato = 'Chiuso'
GROUP BY data

dove è nella query che definisco che questa si chiama "chiuso"?

so stato chiaro?

me sa de no
 
La creazione delle viste è molto comoda quando si ha a che fare con query di questo tipo, ma non è indispensabile. Se guardi nell'ultima pagina del 3° PDF trovi la query "sviluppata" senza l'uso delle viste.

Se invece per contro decidi di usare le viste, possono essere usate molto di più per suddividere il lavoro e rendere più chiara la query. Vedi ultimo PDF allegato, tanto per chiudere in bellezza :fonzie:
 

Allegati

Discussioni simili