- Home
- Categorie
- Coding e Sistemistica
- Coding
- select mysql - Visualizzare clienti che non ordinano da una certa data
- 
							
							
							
							
							
select mysql - Visualizzare clienti che non ordinano da una certa dataDovrei creare una query in mysql che mi visualizza i clienti che NON ordinano da una certa data (data che scelgo io grazie un ad un form in php) le tabelle cosi composte: tabella clienti: 
 id_cliente
 cognome
 nome
 indirizzotabella ordini 
 cod_cliente
 data_ordineGrazie per l'aiuto ! 
 
- 
							
							
							
							
							
Ciao Direi che la questione è meno complicata di quel che sembra  Bisogna eseguire una query sulla tabella dei clienti ed incrociare i risultati con una join nella tabella degli ordini, includendo come ulteriore clausola di ricerca la condizione riguardo la data. Se non riesci ancora, prova a copiare qui la query che hai prodotto  
 
- 
							
							
							
							
							
questa è la select che ho fatto, ma ovviamente mi restituisce i clienti che dopo la data prestabilita hanno fatto ordini, mentre a me interessa il contrario... E NON SO PROPRIO DA DOVE INIZIARE !!! SELECT DISTINCT id_cliente, cognome, nome, cod_cliente, data_ordine 
 FROM clienti
 INNER JOIN ordini ON id_cliente = cod_cliente
 WHERE data_ordine > '$data_fine'
 GROUP BY id_cliente
 ORDER BY cognome
 
- 
							
							
							
							
							
@jb said: questa è la select che ho fatto, ma ovviamente mi restituisce i clienti che dopo la data prestabilita hanno fatto ordini, mentre a me interessa il contrario... E NON SO PROPRIO DA DOVE INIZIARE !!! SELECT DISTINCT id_cliente, cognome, nome, cod_cliente, data_ordine 
 FROM clienti
 INNER JOIN ordini ON id_cliente = cod_cliente
 WHERE data_ordine > '$data_fine'
 GROUP BY id_cliente
 ORDER BY cognomeIn realtà hai già la soluzione per le mani  L'errore nella query che hai prodotto sta nel fatto che richiedi i record dove data_ordine è maggiore alla $data_fine, per cui richiedi i record con la data piu' recente rispetto a quella di riferimento. E se ogni riga nella tabella ordini corrisponde ad un ordine, come logico dedurre che sia, allora è normale che funzioni esattamente al contrario. La condizione logica dovrebbe essere che la data di ordine è inferiore, quindi piu' vecchia, della data di riferimento e ti basta solo modificare l'operatore di confronto in questa espressione .. WHERE data_ordine > '$data_fine' ..così: .. WHERE data_ordine < '$data_fine' ..per ottenere ciò che ti serve  
 
- 
							
							
							
							
							
No, Blanks, purtroppo questa soluzione l'ho gia provata e mi visualizza i clienti che hanno effettuato ordini prima della data , ma a me servono la lista dei clienti che NON hanno effettuato NESSUN ordine dopo quella data !! (QUINDI NELLA TABELLA ORDINI DOPO QUELLA DATA DI RIFERIMENTO COMPAIONO PER ESEMPIO 10 ORDINI COLLEGATI A 10 ID CLIENTI, IO VOGLIO VISUALLIZARE NON I 10 ID CLIENTI MA TUTTI GLI ALTRI CLIENTI CHE NON ESISTONO NELLA TABELLA ORDINI DOPO LA BENEDETTA DATA) 
 Spero di essere stato chiaro nell esempio e ti ringrazio anticipatamente.
 
- 
							
							
							
							
							
le sto provando di tutte ma sono ancora in alto mare... 
 AIUTATEMI , grazie
 
- 
							
							
							
							
							
Sarebbe molto semplice se, nella tabella clienti, ci fosse un ulteriore campo in cui si memorizza la data (in formato timestamp) dell'ultimo ordine effettuato dal cliente. 
 
- 
							
							
							
							
							
La butto lì, anche se non ho analizzato benissimo il problema. In teoria dovresti fare due cicli. In uno ti vai a selezionare tutti gli ordini (Id_utente) di quella data, ed inserisci gli Id_utente in un array. In un altro ti cicli tutti gli utenti, e metti gli id in un altro array. Alla fine fai una differenza tra gli array, e ti verrà fuori un'altro array con gli Id_utente non presenti in quel giorno  Spero di essere stato chiaro. In caso contrario ti faccio un esempio concreto! 
 
- 
							
							
							
							
							che tipo di data estrae da data_ordine e che valore viene memorizzato nella variabile data_fine? stampa la query a video e postala.