[Risolto] selezionare più date da una tabella
[Risolto] selezionare più date da una tabella
ciao a tutti.
vorrei creare una query da "IngredientiV" che selezioni
tutti quei record divisi per "Ingrediente" che abbiano la data più recente per ogni anno..
es. x Bellis Perennis fiori, dovrebbe selezionare:
Bellis perennis fiori RB6c 13/04/16
Bellis perennis fiori RB7b 04/04/17
e non
Bellis perennis fiori RB7a 30/03/17
e così via per tutti gli "Ingredienti"
ma non capisco come procedere.
potresete aiutarmi?
grazie
vorrei creare una query da "IngredientiV" che selezioni
tutti quei record divisi per "Ingrediente" che abbiano la data più recente per ogni anno..
es. x Bellis Perennis fiori, dovrebbe selezionare:
Bellis perennis fiori RB6c 13/04/16
Bellis perennis fiori RB7b 04/04/17
e non
Bellis perennis fiori RB7a 30/03/17
e così via per tutti gli "Ingredienti"
ma non capisco come procedere.
potresete aiutarmi?
grazie
- Allegati
-
- strulgone_2017.odb
- (242.07 KiB) Scaricato 149 volte
Ultima modifica di strulga il domenica 4 marzo 2018, 11:35, modificato 1 volta in totale.
LibreOffice 5.3.0.3 su Windows 7
Re: selezionare più date da una tabella
Ciao, usando la funzione di aggregazione Max() sul campo Data e quella Gruppo() su gli altri campi, selezioni tutte e tre le voci Bellis perennis fiori, perché il loro Codice è diverso.
Se vuoi escluderne una devi aggiungere un criterio che la escluda che non sia la data, ma quale?
Se vuoi escluderne una devi aggiungere un criterio che la escluda che non sia la data, ma quale?
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: selezionare più date da una tabella
Grazie della risposta.
con questo script:
SELECT "Ingrediente",
"Prezzo",
"Categoria",
MAX( "Data" ) AS "Data",
AS "ID" FROM "IngredientiV" GROUP BY "Ingrediente", "Prezzo", "Categoria"
ho già ottenuto un buon isultato.
ora mi mancherebbe di creare un nuovo ID ai record così otetnuti.
sono riuscito a sviluppare questo:
'I' + SUBSTRING ( "Categoria", 1, 1 ) + SUBSTRING ( "Data", 4, 1 ) AS "ID"
mi mancherebbe di aggiungere come ultima cifra all'ID dei numeri sequenziali, è possibile farlo? non capisco come, pensavo di usare rownumber ma non so che sintassi usare...
con questo script:
SELECT "Ingrediente",
"Prezzo",
"Categoria",
MAX( "Data" ) AS "Data",
AS "ID" FROM "IngredientiV" GROUP BY "Ingrediente", "Prezzo", "Categoria"
ho già ottenuto un buon isultato.
ora mi mancherebbe di creare un nuovo ID ai record così otetnuti.
sono riuscito a sviluppare questo:
'I' + SUBSTRING ( "Categoria", 1, 1 ) + SUBSTRING ( "Data", 4, 1 ) AS "ID"
mi mancherebbe di aggiungere come ultima cifra all'ID dei numeri sequenziali, è possibile farlo? non capisco come, pensavo di usare rownumber ma non so che sintassi usare...
LibreOffice 5.3.0.3 su Windows 7
Re: selezionare più date da una tabella
- Hai risolto escludendo il campo Codice dalla query.
Ma quella sintassi è errata, la parteè di troppo.Codice: Seleziona tutto
, AS "ID"
- Non credo sia quella la maniera di aggiungere un ID progressivo. Una volta me ne sono occupato, vediamo se riesco a trovare qualcosa ...
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: selezionare più date da una tabella
si hai ragione, as id l'ho tralasciato quando copiavo il codice.
il codice giusto era così:
SELECT "Ingrediente",
"Prezzo",
"Categoria",
MAX( "Data" ) AS "Data"
FROM "IngredientiV" GROUP BY "Ingrediente", "Prezzo", "Categoria"
il codice giusto era così:
SELECT "Ingrediente",
"Prezzo",
"Categoria",
MAX( "Data" ) AS "Data"
FROM "IngredientiV" GROUP BY "Ingrediente", "Prezzo", "Categoria"
LibreOffice 5.3.0.3 su Windows 7
Re: selezionare più date da una tabella
Ciao, vedi se ti puoi ispirare a questo esempio, ma si deve partire da un id numerato che non so se tu possa avere ...
- Allegati
-
- Progressivo.odb
- (3.83 KiB) Scaricato 126 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: selezionare più date da una tabella
Quindi senza un ID numerato in precedenza non potrò associare una numerazione progressiva alle righe della mia tabella?
che fregatura!
ho provato ad aggiungere id numerato alle tabelle originarie (Tipo "Erbe, "Estratti" etc.) ma sql non me lo permette...
che fregatura!
ho provato ad aggiungere id numerato alle tabelle originarie (Tipo "Erbe, "Estratti" etc.) ma sql non me lo permette...
LibreOffice 5.3.0.3 su Windows 7
Re: selezionare più date da una tabella
Ce l'ho fatta con la tua query ad attribuire valore numerico! adesso provo a completare l'id!!!!!
LibreOffice 5.3.0.3 su Windows 7
Re: selezionare più date da una tabella
Niente. ho capito il problema, ma non ci esco vivo.
a me interessava selezionare solo l'ultimo record tra gli ingredienti inseriti (per esempio l'ultimo alcool) per recuperarne il valore relativo al prezzo.
ma mi sa che per come ho impostato questo db, forse non posso risolvere questa questione, non mi resta che continuare a scegliere gli ingredienti singoli nel formulario. mi sarebbe piaciuto poter selezionare solo il nome di un ingrediente e averne a disposizione le info sul prezzo, nome e categoria.
forse ho sbagliato ad impostare il db?
anzichè creare una tabella per ortofrutta, una per materie prime, una per erbe, una per imballaggi e poi riunire quelle che mi interessavano in ingredienti, avrei dovuto fare un megatabellone con tutto ordinato per id progressivo?
esiste un buon manuale per sql principianti? per capire come ragiona e come impostare le cose?
a me interessava selezionare solo l'ultimo record tra gli ingredienti inseriti (per esempio l'ultimo alcool) per recuperarne il valore relativo al prezzo.
ma mi sa che per come ho impostato questo db, forse non posso risolvere questa questione, non mi resta che continuare a scegliere gli ingredienti singoli nel formulario. mi sarebbe piaciuto poter selezionare solo il nome di un ingrediente e averne a disposizione le info sul prezzo, nome e categoria.
forse ho sbagliato ad impostare il db?
anzichè creare una tabella per ortofrutta, una per materie prime, una per erbe, una per imballaggi e poi riunire quelle che mi interessavano in ingredienti, avrei dovuto fare un megatabellone con tutto ordinato per id progressivo?
esiste un buon manuale per sql principianti? per capire come ragiona e come impostare le cose?
LibreOffice 5.3.0.3 su Windows 7
Re: selezionare più date da una tabella
c'è un modo affinchè count restituisca il valore 001 anzichè 1?
LibreOffice 5.3.0.3 su Windows 7
Re: selezionare più date da una tabella
No, ma puoi fare concatenando:
ma poi hai una stringa (testo), non un numero.
Codice: Seleziona tutto
'00'||COUNT(...)
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
[Risolto] Re: selezionare più date da una tabella
Grazie Charlie ho risolto!
UNico escamotage:
per ogni categoria di ingrediente, i record devono avere data differente, affinchè la numerazione progressiva non si ripeta e non generi ID usguali.
ma per quel che mi serve è perfetto! grazie!
UNico escamotage:
per ogni categoria di ingrediente, i record devono avere data differente, affinchè la numerazione progressiva non si ripeta e non generi ID usguali.
ma per quel che mi serve è perfetto! grazie!
LibreOffice 5.3.0.3 su Windows 7
Re: selezionare più date da una tabella
Ti spiace condividere con noi la soluzione?
P.S. Il tuo [Risolto] va inserito modificando il primo post, non l'ultimo.
P.S. Il tuo [Risolto] va inserito modificando il primo post, non l'ultimo.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: selezionare più date da una tabella
ciao, scusate il file era troppo grande e non lo prendeva, ora l'ho ridotto.
Innanzitutto ho creato la query VIngGroup, in cui ai record venivano associati numeri progressivi riferiti alle date
SELECT
"Ingrediente",
MAX( "Prezzo" ) AS "Prezzo",
"Categoria",
MAX( "Data" ) AS "Data",
( SELECT COUNT( * ) + 1
FROM "IngredientiV" "t2"
WHERE "t2"."Data" < "IngredientiV"."Data" ) AS "Count" FROM "IngredientiV"
GROUP BY "Ingrediente", "Categoria"
ORDER BY "Ingrediente" ASC
poi ho creato la query VIngID in cui creavo nuovi ID per i record. In questo caso gli ID non avevano un char di 4 caratteri fissi, perchè altrimenti mi uscivano doppioni:
SELECT
"Ingrediente" AS "Nome",
"Categoria",
"Prezzo",
"Data",
"Count",
SUBSTRING ("Categoria", 1, 1) + SUBSTRING ("Ingrediente", 1, 2) + SUBSTRING ("Ingrediente", -2, 1) + substring ("Data", 4,1) + substring ("Count", 1, 3 ) AS "Codice"
FROM "VIngGroup"
Order by "Codice" ASC
Poi ho usaato questa query come sorgente di nomi e ID degli ingredienti per i Formulari relativi alle tabelle base.
ho dovuto anche creare una corrispondenza tra vecchio e nuovo ID per quel che riguarda la tabella "Erbe"e "Ortofrutta" altrimenti nei calcoli degli "Estratti" non riuscivo ad attingere ad alcuni dati.
ho creato così una query chiamata "VErbeNome" In cui associavo l'"ID_Erba" con il "Nome"
SELECT "ID_Erbe", "Nome" + ' ' + "Categoria" AS "Nome"
FROM "Erbe"
union
SELECT "ID_Ortofrutta", "Nome"
FROM "Ortofrutta"
e poi una query in cui, grazie al campo "Nome" Associavo l'"ID_Erba" con il "Codice" degli ingredienti creato nella query "VIngID"
SELECT
"VErbeNome".*,
"Ing"."Codice" AS "Codice"
FROM "VErbeNome"
LEFT OUTER JOIN "VIngID" AS "Ing" ON "VErbeNome"."Nome" = "Ing"."Nome"
E così sono riuscito a risolvere la faccenda, sostituendo a tutte le query al posto della query "IngredientiV" la nuova query "VIngID".
Con questo escamotage ho risolto col vincolo di inserire date diverse per ogni categoria di ingrediente, altrimenti corro il rischio di creare nuovi ID doppi.
Grazie mille charlie dell'aiuto.
Innanzitutto ho creato la query VIngGroup, in cui ai record venivano associati numeri progressivi riferiti alle date
SELECT
"Ingrediente",
MAX( "Prezzo" ) AS "Prezzo",
"Categoria",
MAX( "Data" ) AS "Data",
( SELECT COUNT( * ) + 1
FROM "IngredientiV" "t2"
WHERE "t2"."Data" < "IngredientiV"."Data" ) AS "Count" FROM "IngredientiV"
GROUP BY "Ingrediente", "Categoria"
ORDER BY "Ingrediente" ASC
poi ho creato la query VIngID in cui creavo nuovi ID per i record. In questo caso gli ID non avevano un char di 4 caratteri fissi, perchè altrimenti mi uscivano doppioni:
SELECT
"Ingrediente" AS "Nome",
"Categoria",
"Prezzo",
"Data",
"Count",
SUBSTRING ("Categoria", 1, 1) + SUBSTRING ("Ingrediente", 1, 2) + SUBSTRING ("Ingrediente", -2, 1) + substring ("Data", 4,1) + substring ("Count", 1, 3 ) AS "Codice"
FROM "VIngGroup"
Order by "Codice" ASC
Poi ho usaato questa query come sorgente di nomi e ID degli ingredienti per i Formulari relativi alle tabelle base.
ho dovuto anche creare una corrispondenza tra vecchio e nuovo ID per quel che riguarda la tabella "Erbe"e "Ortofrutta" altrimenti nei calcoli degli "Estratti" non riuscivo ad attingere ad alcuni dati.
ho creato così una query chiamata "VErbeNome" In cui associavo l'"ID_Erba" con il "Nome"
SELECT "ID_Erbe", "Nome" + ' ' + "Categoria" AS "Nome"
FROM "Erbe"
union
SELECT "ID_Ortofrutta", "Nome"
FROM "Ortofrutta"
e poi una query in cui, grazie al campo "Nome" Associavo l'"ID_Erba" con il "Codice" degli ingredienti creato nella query "VIngID"
SELECT
"VErbeNome".*,
"Ing"."Codice" AS "Codice"
FROM "VErbeNome"
LEFT OUTER JOIN "VIngID" AS "Ing" ON "VErbeNome"."Nome" = "Ing"."Nome"
E così sono riuscito a risolvere la faccenda, sostituendo a tutte le query al posto della query "IngredientiV" la nuova query "VIngID".
Con questo escamotage ho risolto col vincolo di inserire date diverse per ogni categoria di ingrediente, altrimenti corro il rischio di creare nuovi ID doppi.
Grazie mille charlie dell'aiuto.
- Allegati
-
- strulgTemp - Copia (2) - Copia.odb
- (196.48 KiB) Scaricato 92 volte
LibreOffice 5.3.0.3 su Windows 7