[Risolto] calcolo dipendente dall'anno
[Risolto] calcolo dipendente dall'anno
Ciao a tutti.
Vorrei creare una query al posto di "VE_PrezziParziali" che prenda i dati da "VTEC02_q", in cui eseguo un calcolo:
nvl( "VTEC02_q"."Quantità01" * "Ingrediente01"."Prezzo" / 1000 , 0 ) AS "PrezzoParziale01"
Siccome Il valore "Prezzo" lo prendo da un'altra tabella con un'istruzione join ("VIngredientiPrezzoAnno"),
vorrei far sì che la query mi selezionasse automaticamente il valore di "VIngredientiPrezzoAnno"."Prezzo" confrontando l'anno di "VIngredientiPrezzoAnno"."Data" che sia uguale all'anno del valore "VTEC02_q"."Data"
In poche parole la query, tra due prezzi uguali, deve scegliere il prezzo che abbia l'anno corrispondente all'anno della query stessa
ma non so che sintassi usare. qualcuno mi può aiutare? Grazie.
Vorrei creare una query al posto di "VE_PrezziParziali" che prenda i dati da "VTEC02_q", in cui eseguo un calcolo:
nvl( "VTEC02_q"."Quantità01" * "Ingrediente01"."Prezzo" / 1000 , 0 ) AS "PrezzoParziale01"
Siccome Il valore "Prezzo" lo prendo da un'altra tabella con un'istruzione join ("VIngredientiPrezzoAnno"),
vorrei far sì che la query mi selezionasse automaticamente il valore di "VIngredientiPrezzoAnno"."Prezzo" confrontando l'anno di "VIngredientiPrezzoAnno"."Data" che sia uguale all'anno del valore "VTEC02_q"."Data"
In poche parole la query, tra due prezzi uguali, deve scegliere il prezzo che abbia l'anno corrispondente all'anno della query stessa
ma non so che sintassi usare. qualcuno mi può aiutare? Grazie.
- Allegati
-
- strulgone - Copia (2) - Copia.odb
- (213.21 KiB) Scaricato 125 volte
Ultima modifica di strulga il venerdì 16 marzo 2018, 0:44, modificato 1 volta in totale.
LibreOffice 5.3.0.3 su Windows 7
Re: calcolo dipendente dall'anno
Ho provato così:
ma se lo applico solo all' "Ingrediente01" funziona, ma se lo applico a tutti gli ingredienti non va.
cosa sbaglio?
Codice: Seleziona tutto
SELECT "ID_Estratto", "Data",
"Ingrediente01", "Quantità01F",
nvl( "VTEC02_q"."Quantità01F" * "Ingrediente01"."Prezzo" / 1000 , 0 ) AS "PrezzoParziale01",
"Ingrediente02",
"Quantità02F",
nvl( "VTEC02_q"."Quantità02F" * "Ingrediente02"."Prezzo" / 1000 , 0 ) AS "PrezzoParziale02",
"Ingrediente03",
"Quantità03F" ,
nvl( "VTEC02_q"."Quantità03F" * "Ingrediente03"."Prezzo" / 1000 , 0 ) AS "PrezzoParziale03",
"Ingrediente04",
"Quantità04" AS "Quantità04F",
nvl( "VTEC02_q"."Quantità04" * "Ingrediente04"."Prezzo" / 1000 , 0 ) AS "PrezzoParziale04"
FROM "VTEC02_q"
LEFT OUTER JOIN "VIngredientiPrezzoAnno" AS "Ingrediente01" ON "VTEC02_q"."Ingrediente01" = "Ingrediente01"."Codice"
where "VTEC02_q"."Anno" = "Ingrediente01"."Data"
LEFT OUTER JOIN "VIngredientiPrezzoAnno" AS "Ingrediente02" ON "VTEC02_q"."Ingrediente02" = "Ingrediente02"."Codice"
where "VTEC02_q"."Anno" = "Ingrediente02"."Data"
LEFT OUTER JOIN "VIngredientiPrezzoAnno" AS "Ingrediente03" ON "VTEC02_q"."Ingrediente03" = "Ingrediente03"."Codice"
where "VTEC02_q"."Anno" = "Ingrediente03"."Data"
LEFT OUTER JOIN "VIngredientiPrezzoAnno" AS "Ingrediente04" ON "VTEC02_q"."Ingrediente04" = "Ingrediente04"."Codice"
where "VTEC02_q"."Anno" = "Ingrediente04"."Data"
cosa sbaglio?
Ultima modifica di charlie il giovedì 15 marzo 2018, 9:42, modificato 2 volte in totale.
Motivazione: Formattato codice
Motivazione: Formattato codice
LibreOffice 5.3.0.3 su Windows 7
Re: calcolo dipendente dall'anno
Non è facile districarsi fra le numerose tabelle, query e complicati nomi campo che usi.
Alcune query fanno in errore (tabella non trovata, p.e.).
Alcune query fanno in errore (tabella non trovata, p.e.).
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: calcolo dipendente dall'anno
Ma se tolgo l'istruzione where funziona tutto perfettamente...
Con where va solo se considero rsclusivamente ingrediente01
Con where va solo se considero rsclusivamente ingrediente01
LibreOffice 5.3.0.3 su Windows 7
Re: calcolo dipendente dall'anno
Come dicevo ... "colonna non trovata"!
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: calcolo dipendente dall'anno
Ho visto anche io che dice così.
Ma in realtà se faccio il calcolo su un solo ingrediente, la colonna la trova.
le tabelle sono solo quelle due "VIngredientiIDAnno" e "VTEC02_q", e le colonne sono quelle...
secondo me c'è un errore di ortografia nello scrivere quattro left outer join con annessi i relativi where.
Allego da in cui "E_PrezziParziali" calcola l'ingreidente02 e la colonna la trova...
Ma in realtà se faccio il calcolo su un solo ingrediente, la colonna la trova.
le tabelle sono solo quelle due "VIngredientiIDAnno" e "VTEC02_q", e le colonne sono quelle...
secondo me c'è un errore di ortografia nello scrivere quattro left outer join con annessi i relativi where.
Allego da in cui "E_PrezziParziali" calcola l'ingreidente02 e la colonna la trova...
- Allegati
-
- strulgone - Copia - Copia.odb
- (213.08 KiB) Scaricato 126 volte
LibreOffice 5.3.0.3 su Windows 7
Re: calcolo dipendente dall'anno
La sintassi che cerchi potrebbe essere questa:
Note:
Codice: Seleziona tutto
SELECT "VTEC02_q"."ID_Estratto", "VTEC02_q"."Data",
"VTEC02_q"."Ingrediente01", "VTEC02_q"."Quantità01F",
nvl( "Quantità01F" * "Prezzo" / 1000, 0 ) AS "PrezzoParziale01",
"VTEC02_q"."Ingrediente02", "VTEC02_q"."Quantità02F",
nvl( "Quantità02F" * "Prezzo" / 1000, 0 ) AS "PrezzoParziale02",
"VTEC02_q"."Ingrediente03", "VTEC02_q"."Quantità03F",
nvl( "Quantità03F" * "Prezzo" / 1000, 0 ) AS "PrezzoParziale03"
FROM { oj "VIngredientiPrezzoAnno" RIGHT OUTER JOIN "VTEC02_q" ON "VIngredientiPrezzoAnno"."Codice" = "VTEC02_q"."Ingrediente01" AND "VIngredientiPrezzoAnno"."Data" = "VTEC02_q"."Anno" AND "VIngredientiPrezzoAnno"."Codice" = "VTEC02_q"."Ingrediente02" AND "VIngredientiPrezzoAnno"."Codice" = "VTEC02_q"."Ingrediente03" }
- Quantità04F non esiste
- Non so se servano tutte quelle relazioni JOIN insieme, ma le ho messe lo stesso
- Poiché sono partito da una costruzione "grafica" che non ho poi voluto cambiare, le relazioni mi sono venute RIGHT anziché LEFT. Invertendo i termini dovrebbe essere possibile trasformarle, ma le lascerei così se funzionano
- Non avevo mai visto la funzione nvl(), da una ricerca dovrebbe funzionare solo con ORACLE ma vedo che funziona anche con HSQLDB 1.8. Mi sembra lo stesso che COALESCE(). Per la serie "non si finisce mai di imparare"
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: calcolo dipendente dall'anno
Grazie Chalie, ma non sono riuscito a fare funzionare quello script.
Nel frattempo facendo un po' di prove, sono riuscito a scrivere questo che sembra funzionare:
JOIN "VIngredientiPrezzoAnno" AS"Ingrediente01" ON "VTEC02_q"."Ingrediente01" = "Ingrediente01"."Codice"
JOIN "VIngredientiPrezzoAnno" AS"Ingrediente02" ON "VTEC02_q"."Ingrediente02" = "Ingrediente02"."Codice"
JOIN "VIngredientiPrezzoAnno" AS"Ingrediente03" ON "VTEC02_q"."Ingrediente03" = "Ingrediente03"."Codice"
JOIN "VIngredientiPrezzoAnno" AS"Ingrediente04" ON "VTEC02_q"."Ingrediente04" = "Ingrediente04"."Codice"
where (year ("VTEC02_q"."Data") = "Ingrediente02"."Data" and year ("VTEC02_q"."Data") = "Ingrediente01"."Data" and
year ("VTEC02_q"."Data") = "Ingrediente03"."Data" and year ("VTEC02_q"."Data") = "Ingrediente04"."Data" )
bastava elencare tutti i where in fondo alle join, collegati dal' and!
yeah!! felicissimo!!
Nel frattempo facendo un po' di prove, sono riuscito a scrivere questo che sembra funzionare:
JOIN "VIngredientiPrezzoAnno" AS"Ingrediente01" ON "VTEC02_q"."Ingrediente01" = "Ingrediente01"."Codice"
JOIN "VIngredientiPrezzoAnno" AS"Ingrediente02" ON "VTEC02_q"."Ingrediente02" = "Ingrediente02"."Codice"
JOIN "VIngredientiPrezzoAnno" AS"Ingrediente03" ON "VTEC02_q"."Ingrediente03" = "Ingrediente03"."Codice"
JOIN "VIngredientiPrezzoAnno" AS"Ingrediente04" ON "VTEC02_q"."Ingrediente04" = "Ingrediente04"."Codice"
where (year ("VTEC02_q"."Data") = "Ingrediente02"."Data" and year ("VTEC02_q"."Data") = "Ingrediente01"."Data" and
year ("VTEC02_q"."Data") = "Ingrediente03"."Data" and year ("VTEC02_q"."Data") = "Ingrediente04"."Data" )
bastava elencare tutti i where in fondo alle join, collegati dal' and!
yeah!! felicissimo!!
- Allegati
-
- strulgone - Copia - Copia.odb
- (213.3 KiB) Scaricato 112 volte
LibreOffice 5.3.0.3 su Windows 7