[Risolto] Case: Novizio SQL

Discussioni sulle caratteristiche di database
Rispondi
strulga
Messaggi: 63
Iscritto il: martedì 18 luglio 2017, 11:53

[Risolto] Case: Novizio SQL

Messaggio da strulga »

Ciao a Tutti, Sono Strulga. Ho iniziato da poco ad usare base, con l'aiuto di un amico, sto cercando di creare un database complesso riguardo ad un magazzino di erboristeria.
Le Query le compilo con sql non in modo automatico.
I comandi più semplici li riesco ad usare.
MA sono giunto ad un punto morto.
Vorrei fare in modo che se scelgo il valore "A" di un campo "ID", mi esegue determinati calcoli,
mentre se scelgo il valore "B" della stessa tabella, mi esegue calcoli differenti.

Ora i calcoli direttamente inseriti in due query differenti funzionano e sono corretti.
Sto cercando il modo di riunirli però in un'unica query, e pensavo di usare il comando CASE.
Ma forse sto sbagliando, perchè mi sembra di intuire che CASE restiuisce un campo LONGVARCHAR, per cui SQL mi dà errore perchè dice :
Stato SQL: S1000
Codice di errore: -216
Tipo di parametro irrisolto come risultato di CASE quando il tipo di operandi sono NUMERIC e LONGVARCHAR in statement [SELECT *,

Se così fosse, esiste un modo per far sì che date due righe diverse nella stessa tabella, SQL usa i dati di tali righe in operazioni differenti, relative a differenti ID, restituendomi i risultati nella stessa tabella?


questo è il codice:

Codice: Seleziona tutto

SELECT *,
CASE ("Tipa"."Codice") 
   WHEN '1' THEN "Quantità"."Quantità01V" * "Tipa"."Densità2"   //VolumeAlcool
	WHEN '2' THEN '0'
END 
AS "cicc"
FROM "Estratti"
LEFT OUTER JOIN "VETMPS" AS "PesoSecco" ON "Estratti"."ID_Estratto" = "PesoSecco"."ID_Estratto" 
LEFT OUTER JOIN "Tipo_Estratto" AS "Tipa" ON "Estratti"."Tipo" = "Tipa"."ID_TipoEstratto" 
LEFT OUTER JOIN "VETMPF_q" AS "Quantità" ON "Estratti"."ID_Estratto" = "Quantità"."ID_Estratto" 
WHERE "Tipo" = 'TM70'
 Editato: Codifica aggiunta (Admin) 
Grazie mille
Ultima modifica di charlie il mercoledì 19 luglio 2017, 8:22, modificato 1 volta in totale.
Motivazione: Aggiuto [Risolto] e spunta verde
LibreOffice 5.3.0.3 su Windows 7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8786
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Case: Novizio SQL

Messaggio da charlie »

Ciao, e benvenuto sul forum.
Per risponderti correttamente occorre verificare il codice e le modifiche, ma non pui costringere chi ci prova a costrursi il database.
Perchè non posti il tuo? (senza dati sensibili).
charlie
macOS 14.3 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
strulga
Messaggi: 63
Iscritto il: martedì 18 luglio 2017, 11:53

Re: Case: Novizio SQL

Messaggio da strulga »

Ciao non ho capito cosa dovrei postare. Tutto il DB? Ora lo allego.
Sapete dirmi se è possibile nel comando CASE, dopo il THEN inserire un conteggio numerico che mi restituisca un risultato nummerico?

PS ilDB l'ho aggiunto, è un po' incasinato ma quello che vorrei capire sta all'interno della query "Case".
grazie mille!
Allegati
strulgone.odb
ecco tutto il DB,
(23.65 KiB) Scaricato 114 volte
LibreOffice 5.3.0.3 su Windows 7
strulga
Messaggi: 63
Iscritto il: martedì 18 luglio 2017, 11:53

Re: Case: Novizio SQL

Messaggio da strulga »

Ce l'ho fatta!!!!

Codice: Seleziona tutto

SELECT 
"ID_Estratto",
"Tipo",
"QuantitàFinale",
"PesoSeccoIniziale",
"PesoSecco",
"QuantitàEV",
"Ingrediente01",
"Quantità01",
"Ingrediente02",
"Quantità02",
"Ingrediente03",
"Quantità03",
"Ingrediente04",
"Quantità04",
"DE",
"Concentrazione",
"Densità2",

CASE ("Tipo") 
     WHEN 'TM70' THEN "QuantitàEV" * "Concentrazione" /100  //VolumeAlcool
	WHEN 'GM' THEN "QuantitàFinale" / 3 // QuantitàParzialiGemmo
WHEN 'ENO' THEN "QuantitàFinale" * "Quantità01" /100  //QuantitàAlcool
END 
AS "QParzialiTemp",


CASE ("Tipo") 
     WHEN 'TM70' THEN "QuantitàEV" * "Quantità02" /100  //VolumeAlcool
	WHEN 'GM' THEN "QuantitàFinale" / 3 // QuantitàParzialiGemmo
WHEN 'ENO' THEN "QuantitàFinale" * "Quantità02" /100  //QuantitàVino
END 
AS "QAcquaTemp"

FROM "Estratti"
LEFT OUTER JOIN "VETMPS" AS "PesoSecco" ON "Estratti"."ID_Estratto" = "PesoSecco"."ID_Estratto" 
LEFT OUTER JOIN "Tipo_Estratto" AS "Tipa" ON "Estratti"."Tipo" = "Tipa"."ID_TipoEstratto"
 Editato: Aggiunta codifica (Admin) 
LibreOffice 5.3.0.3 su Windows 7
Rispondi