[SQL] Come creare questa query?

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
pico977
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 588
Iscrizione: domenica 4 maggio 2008, 20:14

[SQL] Come creare questa query?

Messaggio da pico977 »

Ciao a tutti

Supponiamo di avere questa tabella:
EF Costo
2005 180
2007 290
2008 220

Come devo scrivere una select che mi ritorni questi dati:
EF Costo
2004 0
2005 180
2006 0
2007 290
2008 220
2009 0

Non saprei spiegarlo meglio se non con questo esempio
Grazie a chi riesce a risolvermi
L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, poi ti spiega la lezione
ciaccaro85
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 736
Iscrizione: mercoledì 28 ottobre 2009, 16:00

Re: [SQL] Come creare questa query?

Messaggio da ciaccaro85 »

pico977 ha scritto: Ciao a tutti

Supponiamo di avere questa tabella:
EF Costo
2005 180
2007 290
2008 220

Come devo scrivere una select che mi ritorni questi dati:
EF Costo
2004 0
2005 180
2006 0
2007 290
2008 220
2009 0

Non saprei spiegarlo meglio se non con questo esempio
Grazie a chi riesce a risolvermi
prova così:

Codice: Seleziona tutto

select EF, COSTO from nometabella order by EF, COSTO;
Make me a sandwich... What??? Make it yourself !
sudo make me a sandwich... OK!
Avatar utente
pico977
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 588
Iscrizione: domenica 4 maggio 2008, 20:14

Re: [SQL] Come creare questa query?

Messaggio da pico977 »

non ho spiegato bene il problema,  la select deve riportarmi anche, l'anno prima del minimo tra i presenti in tabella, l'anno dopo del massimo, presente in tabella, e gli anni intermedi non presenti, e deve impostare i relativi costi a zero.
L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, poi ti spiega la lezione
radioangelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 447
Iscrizione: giovedì 5 agosto 2010, 22:42
Località: LOCRI

Re: [SQL] Come creare questa query?

Messaggio da radioangelo »

Ciao,
se il tuo database prevede union e subquery puoi provare così:

Codice: Seleziona tutto

select EF, COSTO from nometabella order by EF, COSTO;
union
select EF,0 FROM TABELLA_CON_TUTTI_GLI_ANNI WHERE EF NOT IN (SELECT EF FROM nometabella) order by EF
Ovviamente TABELLA_CON_TUTTI_GLI_ANNI deve essere una ulteriore tabella che contiene l'elenco di tutti gli anni che ti interessano.

Questo ti restituirà però una cosa leggermente diversa, ossia:

Codice: Seleziona tutto

2005 180
2007 290
2008 220
2004 0
2006 0
2009 0
... ma se questo ti funziona sei quasi alla fine dell'opera
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [SQL] Come creare questa query?

Messaggio da Zoff »

Se però gli hanni non ci sono ci fai poco...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
pico977
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 588
Iscrizione: domenica 4 maggio 2008, 20:14

Re: [SQL] Come creare questa query?

Messaggio da pico977 »

Meglio di niente

Intanto mi avvicino al risultato...
L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, poi ti spiega la lezione
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [SQL] Come creare questa query?

Messaggio da Zoff »

Dovrebbe bastare:

Codice: Seleziona tutto

select EF, COSTO from nometabella order by EF, COSTO;
union all
select EF,0 FROM TABELLA_CON_TUTTI_GLI_ANNI WHERE EF NOT IN (SELECT EF FROM nometabella) order by EF
order by EF asc
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 1 ospite