Discussione:
MySQL
(troppo vecchio per rispondere)
Alessandra Marino
2024-02-09 17:31:54 UTC
Permalink
Ciao a tutti non riesco a risolvere questa query, la traccia è la seguente:
Si scriva una query per confrontare i costi alberghieri totali dei ricoveri dell’anno scorso con quelli di due anni fa.
SELECT year(date())-2 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo, count(*) as num_ricoveri
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice
UNION
SELECT year(date())-1 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND r.reparto=rep.codice

questa sarebbe la soluzione proposta, ma inserita su mySQL risulta errata.
Grazie a tutti.
Bruno Campanini
2024-02-10 17:20:39 UTC
Permalink
Post by Alessandra Marino
Si scriva una query per confrontare i costi alberghieri totali dei ricoveri
dell’anno scorso con quelli di due anni fa. SELECT year(date())-2 as
anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep WHERE
year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo FROM
ricoveri r, reparti rep WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
questa sarebbe la soluzione proposta, ma inserita su mySQL risulta errata.
Grazie a tutti.
Ti funziona almeno una delle due query (quella dell'anno scorso
o quella di due anni fa?)

Io direi di no.

Bruno
Alessandra Marino
2024-02-10 17:53:39 UTC
Permalink
Post by Bruno Campanini
Post by Alessandra Marino
Si scriva una query per confrontare i costi alberghieri totali dei ricoveri
dell’anno scorso con quelli di due anni fa. SELECT year(date())-2 as
anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep WHERE
year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo FROM
ricoveri r, reparti rep WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
questa sarebbe la soluzione proposta, ma inserita su mySQL risulta errata.
Grazie a tutti.
Ti funziona almeno una delle due query (quella dell'anno scorso
o quella di due anni fa?)
Io direi di no.
Bruno
ciao scusami ma la soluzione proposta non lho scritta io, sapresti dirmi perché risulta errata?
Grazie.
Bruno Campanini
2024-02-10 19:55:22 UTC
Permalink
Post by Alessandra Marino
Post by Bruno Campanini
Post by Alessandra Marino
Si scriva una query per confrontare i costi alberghieri totali dei ricoveri
dell’anno scorso con quelli di due anni fa. SELECT year(date())-2 as
anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep WHERE
year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo FROM
ricoveri r, reparti rep WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
questa sarebbe la soluzione proposta, ma inserita su mySQL risulta errata.
Grazie a tutti.
Ti funziona almeno una delle due query (quella dell'anno scorso
o quella di due anni fa?)
Io direi di no.
Bruno
ciao scusami ma la soluzione proposta non lho scritta io, sapresti dirmi
perché risulta errata? Grazie.
Non mi risulta errata: ho l'impressione debba esserlo.
Ci sono molti As (il che significa combinazioni/operazioni
su campi a formare campi virtuali), degli asterischi che
a volte indicato qualunque elemento come in Count(*), altre
volte il segno algebrico di prodotto ome in
sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo...

Io conosco Access ma non MySql, quindi di quest'ultimo non
so giudicare ortografia e sintassi.
Non puoi mettere online quelle quattro tabelle striminzite?

Bruno
Alessandra Marino
2024-02-12 09:36:27 UTC
Permalink
Post by Bruno Campanini
Post by Alessandra Marino
Post by Bruno Campanini
Post by Alessandra Marino
Si scriva una query per confrontare i costi alberghieri totali dei ricoveri
dell’anno scorso con quelli di due anni fa. SELECT year(date())-2 as
anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep WHERE
year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo FROM
ricoveri r, reparti rep WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
questa sarebbe la soluzione proposta, ma inserita su mySQL risulta errata.
Grazie a tutti.
Ti funziona almeno una delle due query (quella dell'anno scorso
o quella di due anni fa?)
Io direi di no.
Bruno
ciao scusami ma la soluzione proposta non lho scritta io, sapresti dirmi
perché risulta errata? Grazie.
Non mi risulta errata: ho l'impressione debba esserlo.
Ci sono molti As (il che significa combinazioni/operazioni
su campi a formare campi virtuali), degli asterischi che
a volte indicato qualunque elemento come in Count(*), altre
volte il segno algebrico di prodotto ome in
sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo...
Io conosco Access ma non MySql, quindi di quest'ultimo non
so giudicare ortografia e sintassi.
Non puoi mettere online quelle quattro tabelle striminzite?
Bruno
Ciao, purtroppo ho un datebase che è privato, poichè è stato creato dall'insegnante del mio corso, comunque nelle tabelle sono presenti i seguenti dati:
RICOVERI: codice fiscale paziente, codice fiscale medico, data ingresso, data uscita, drg, id ricovero (chiave della tabella), numero reparto, diagnosi ricovero.
REPARTI: numero reparto(chiave della tabella), nome reparto, costo giornaliero, numero letti.
Ammammata
2024-02-11 13:44:27 UTC
Permalink
Il giorno Fri 09 Feb 2024 06:31:54p, *Alessandra Marino* ha inviato
Post by Alessandra Marino
SELECT year(date())-2 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND
r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as
costo FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
conosco un po' il SQL di MS, non mi piacciono le due tabelle nei FROM,
non è specificato in base a quali campi sono collegate (con un JOIN)
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
Ammammata
2024-02-11 13:46:31 UTC
Permalink
Il giorno Sun 11 Feb 2024 02:44:27p, *Ammammata* ha inviato su
Post by Ammammata
Il giorno Fri 09 Feb 2024 06:31:54p, *Alessandra Marino* ha
Post by Alessandra Marino
SELECT year(date())-2 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND
r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as
costo FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
conosco un po' il SQL di MS, non mi piacciono le due tabelle nei
FROM, non è specificato in base a quali campi sono collegate (con
un JOIN)
FROM ricoveri r
INNER JOIN reparti rep on rep.codice=r.reparto
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
BFS
2024-02-12 06:54:38 UTC
Permalink
Post by Ammammata
Il giorno Sun 11 Feb 2024 02:44:27p, *Ammammata* ha inviato su
Post by Ammammata
Il giorno Fri 09 Feb 2024 06:31:54p, *Alessandra Marino* ha
Post by Alessandra Marino
SELECT year(date())-2 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND
r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as
costo FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
conosco un po' il SQL di MS, non mi piacciono le due tabelle nei
FROM, non è specificato in base a quali campi sono collegate (con
un JOIN)
FROM ricoveri r
INNER JOIN reparti rep on rep.codice=r.reparto
in mysql se rep.codice e r.reparto sono lo stesso valore identificativo
puoi fare a meno del join

basta metterli in where come nella soluzione descritta.
BFS
Ammammata
2024-02-12 08:13:22 UTC
Permalink
Post by Alessandra Marino
Post by Ammammata
conosco un po' il SQL di MS, non mi piacciono le due tabelle nei
FROM, non è specificato in base a quali campi sono collegate (con
un JOIN)
FROM ricoveri r
INNER JOIN reparti rep on rep.codice=r.reparto
in mysql se rep.codice e r.reparto sono lo stesso valore identificativo puoi
fare a meno del join
basta metterli in where come nella soluzione descritta.
questo "join invisibile" di MySQL presuppone che entrambi i campi siano
indicizzati, chiavi univoche o altro?
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
BFS
2024-02-12 09:26:48 UTC
Permalink
Post by Ammammata
Post by BFS
Post by Alessandra Marino
Post by Ammammata
conosco un po' il SQL di MS, non mi piacciono le due tabelle nei
FROM, non è specificato in base a quali campi sono collegate (con
un JOIN)
FROM ricoveri r
INNER JOIN reparti rep on rep.codice=r.reparto
in mysql se rep.codice e r.reparto sono lo stesso valore
identificativo puoi fare a meno del join
basta metterli in where come nella soluzione descritta.
questo "join invisibile" di MySQL presuppone che entrambi i campi siano
indicizzati, chiavi univoche o altro?
indice no
univoco neppure

esempio
hai una tabella companies con un idcliente
una tabella user con un idcliente (tabella che contiene tutti i
dipendenti delle aziende)

in sqlserver/access faresti

select ....from companies inner join user on
companies.idcliente=users.idcliente

in mysql puoi fare cosi

SELECT ... FROM users a , companies b where a.idCliente=b.idCliente


BFS
Ammammata
2024-02-12 13:41:06 UTC
Permalink
Post by BFS
in sqlserver/access faresti
select ....from companies inner join user on
companies.idcliente=users.idcliente
in mysql puoi fare cosi
SELECT ... FROM users a , companies b where a.idCliente=b.idCliente
ok, chiaro, personalmente preferisco che la relazione di join sia
espressa nell'elenco delle tabelle piuttosto che nella condizione
where, in modo da averla sotto il naso subito per eventuali controlli

il where lo lascerei solo per impostare ulteriori condizioni
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
BFS
2024-02-12 13:52:22 UTC
Permalink
Post by Ammammata
Post by BFS
in sqlserver/access faresti
select ....from companies inner join user on
companies.idcliente=users.idcliente
in mysql puoi fare cosi
SELECT ... FROM users a , companies b where a.idCliente=b.idCliente
ok, chiaro, personalmente preferisco che la relazione di join sia
espressa nell'elenco delle tabelle piuttosto che nella condizione where,
in modo da averla sotto il naso subito per eventuali controlli
il where lo lascerei solo per impostare ulteriori condizioni
concordo
BFS
Bruno Campanini
2024-02-12 15:26:58 UTC
Permalink
Post by BFS
in sqlserver/access faresti
select ....from companies inner join user on
companies.idcliente=users.idcliente
in mysql puoi fare cosi
SELECT ... FROM users a , companies b where a.idCliente=b.idCliente
ok, chiaro, personalmente preferisco che la relazione di join sia espressa
nell'elenco delle tabelle piuttosto che nella condizione where, in modo da
averla sotto il naso subito per eventuali controlli
il where lo lascerei solo per impostare ulteriori condizioni
Ma, giusto una domanda: sto c.... di MySql non ce l'ha
una griglia QBE (Query by Example) come quella di Access?

Bruno
Alessandra Marino
2024-02-17 17:52:12 UTC
Permalink
Post by Bruno Campanini
Post by BFS
in sqlserver/access faresti
select ....from companies inner join user on
companies.idcliente=users.idcliente
in mysql puoi fare cosi
SELECT ... FROM users a , companies b where a.idCliente=b.idCliente
ok, chiaro, personalmente preferisco che la relazione di join sia espressa
nell'elenco delle tabelle piuttosto che nella condizione where, in modo da
averla sotto il naso subito per eventuali controlli
il where lo lascerei solo per impostare ulteriori condizioni
Ma, giusto una domanda: sto c.... di MySql non ce l'ha
una griglia QBE (Query by Example) come quella di Access?
Bruno
salve, non ho mai usato access, quindi non saprei. Grazie
Bruno Campanini
2024-02-17 19:02:31 UTC
Permalink
Post by Alessandra Marino
Post by Bruno Campanini
Post by BFS
in sqlserver/access faresti
select ....from companies inner join user on
companies.idcliente=users.idcliente
in mysql puoi fare cosi
SELECT ... FROM users a , companies b where a.idCliente=b.idCliente
ok, chiaro, personalmente preferisco che la relazione di join sia espressa
nell'elenco delle tabelle piuttosto che nella condizione where, in modo da
averla sotto il naso subito per eventuali controlli
il where lo lascerei solo per impostare ulteriori condizioni
Ma, giusto una domanda: sto c.... di MySql non ce l'ha
una griglia QBE (Query by Example) come quella di Access?
Bruno
salve, non ho mai usato access, quindi non saprei. Grazie
La mia domanda era pleonastica.
È evidente che MySQL una griglia QBE non ce l'ha...
diversamente sarebbe stata la cosa che per prima
avresti imparato ad usare.
Io non ho mai fatto una Query a mano, never!
nemmeno le più facili.

Per chi vuole programmare la ritengo la cosa
migliore di tutto l'MS Office.

Bruno

Alessandra Marino
2024-02-12 09:41:35 UTC
Permalink
Post by Ammammata
Il giorno Sun 11 Feb 2024 02:44:27p, *Ammammata* ha inviato su
Post by Ammammata
Il giorno Fri 09 Feb 2024 06:31:54p, *Alessandra Marino* ha
Post by Alessandra Marino
SELECT year(date())-2 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND
r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as
costo FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
conosco un po' il SQL di MS, non mi piacciono le due tabelle nei
FROM, non è specificato in base a quali campi sono collegate (con
un JOIN)
FROM ricoveri r
INNER JOIN reparti rep on rep.codice=r.reparto
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
non ho mai visto durante il corso l'inner join, penso sia il nuovo linguaggio per my sql?
BFS
2024-02-12 09:46:39 UTC
Permalink
Post by Alessandra Marino
Post by Ammammata
Il giorno Sun 11 Feb 2024 02:44:27p, *Ammammata* ha inviato su
Post by Ammammata
Il giorno Fri 09 Feb 2024 06:31:54p, *Alessandra Marino* ha
Post by Alessandra Marino
SELECT year(date())-2 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND
r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as
costo FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
conosco un po' il SQL di MS, non mi piacciono le due tabelle nei
FROM, non è specificato in base a quali campi sono collegate (con
un JOIN)
FROM ricoveri r
INNER JOIN reparti rep on rep.codice=r.reparto
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
non ho mai visto durante il corso l'inner join, penso sia il nuovo linguaggio per my sql?
inner join left join e right join son sempre esistiti a mia memoria in mysql

BFS
Alessandra Marino
2024-02-12 09:39:25 UTC
Permalink
Post by Ammammata
Il giorno Fri 09 Feb 2024 06:31:54p, *Alessandra Marino* ha inviato
Post by Alessandra Marino
SELECT year(date())-2 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo,
count(*) as num_ricoveri FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND
r.reparto=rep.codice UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as
costo FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND
r.reparto=rep.codice
conosco un po' il SQL di MS, non mi piacciono le due tabelle nei FROM,
non è specificato in base a quali campi sono collegate (con un JOIN)
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
ciao, ho visto su internet che l'insegnante del mio corso utilizza il vecchio linguaggio di my sql, e nel mio caso per collegare la from con le join nella where usiamo l'alias che diamo nella from--> from ricoveri R, reparti REP where R.numero_reparto=REP.numero_reparto
Ammammata
2024-02-17 15:47:20 UTC
Permalink
Il giorno Mon 12 Feb 2024 10:39:25a, *Alessandra Marino* ha inviato
Post by Alessandra Marino
ho visto su internet che l'insegnante del mio corso utilizza il
vecchio linguaggio di my sql, e nel mio caso per collegare la from
con le join nella where usiamo l'alias che diamo nella from-->
from ricoveri R, reparti REP where
R.numero_reparto=REP.numero_reparto
sì, gli alias li uso praticamente sempre per non portarmi dietro il
nome delle tabelle ogni volta che mi serve un campo
le persona con cui lavoro usano il metodo "alfabetico" usando gli alias
a, b, c, d, eccetera oppure quello progrressivo t0, t1, t2, t3 eccetera
personalmente preferisco quello alfabetico ma con un certo riferimento
alla tabella stessa

p.e. in SAP Business One

select *
from ORDR h
inner join RDR1 r on r.DocEntry = h.DocEntry
inner join OCRD bp on bp.CardCode = h.CardCode
inner join OITM p on p.ItemCode = r.Itemcode

dove ORDR sono le testate degli ordini (h-eaders), RDR1 sono le righe
(r-ows), OCRD è l'anagrafica dei clienti (b-usiness p-artners) e OITM è
l'anagrafica degli articoli (p-roducts)

nella query i nomi dei campi preceduti da h, r, bp o p mi fanno capire
meglio dove sto andando a prendere il valore
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
BFS
2024-02-12 06:55:32 UTC
Permalink
Post by Alessandra Marino
Si scriva una query per confrontare i costi alberghieri totali dei ricoveri dell’anno scorso con quelli di due anni fa.
SELECT year(date())-2 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo, count(*) as num_ricoveri
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice
UNION
SELECT year(date())-1 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND r.reparto=rep.codice
questa sarebbe la soluzione proposta, ma inserita su mySQL risulta errata.
Grazie a tutti.
che errore ti da?
hai costruito le due tabelle ricoveri e reparti con i campi oggetto
della query?
inoltre in mysql occhio al maiuscolo/minuscolo

BFS
Alessandra Marino
2024-02-12 09:44:20 UTC
Permalink
Post by BFS
Post by Alessandra Marino
Si scriva una query per confrontare i costi alberghieri totali dei ricoveri dell’anno scorso con quelli di due anni fa.
SELECT year(date())-2 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo, count(*) as num_ricoveri
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice
UNION
SELECT year(date())-1 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND r.reparto=rep.codice
questa sarebbe la soluzione proposta, ma inserita su mySQL risulta errata.
Grazie a tutti.
che errore ti da?
hai costruito le due tabelle ricoveri e reparti con i campi oggetto
della query?
inoltre in mysql occhio al maiuscolo/minuscolo
BFS
mi dice che ho un errore nella compilazione del linguaggio, ma non specifica dove, penso sia nella date(), perchè da sempre errore con quella. Per il maiuscolo/minuscolo da problemi solo se nella from il nome delle tabelle è in maiuscolo. grazie a tutti.
BFS
2024-02-12 09:53:44 UTC
Permalink
Post by Alessandra Marino
Post by BFS
Post by Alessandra Marino
Si scriva una query per confrontare i costi alberghieri totali dei ricoveri dell’anno scorso con quelli di due anni fa.
SELECT year(date())-2 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo, count(*) as num_ricoveri
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice
UNION
SELECT year(date())-1 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND r.reparto=rep.codice
questa sarebbe la soluzione proposta, ma inserita su mySQL risulta errata.
Grazie a tutti.
che errore ti da?
hai costruito le due tabelle ricoveri e reparti con i campi oggetto
della query?
inoltre in mysql occhio al maiuscolo/minuscolo
BFS
mi dice che ho un errore nella compilazione del linguaggio, ma non specifica dove, penso sia nella date(), perchè da sempre errore con quella. Per il maiuscolo/minuscolo da problemi solo se nella from il nome delle tabelle è in maiuscolo. grazie a tutti.
date() non esiste in mysql
se il tuo intento è ottenere l'anno del giorno corrente usa

year(current_date())


BFS
BFS
2024-02-12 10:12:54 UTC
Permalink
Post by Alessandra Marino
Si scriva una query per confrontare i costi alberghieri totali dei ricoveri dell’anno scorso con quelli di due anni fa.
SELECT year(date())-2 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo, count(*) as num_ricoveri
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice
UNION
SELECT year(date())-1 as anno,sum( (r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND r.reparto=rep.codice
questa sarebbe la soluzione proposta, ma inserita su mySQL risulta errata.
Grazie a tutti.
ma per chiarezza

il professore chiede:
Si scriva una query per confrontare i costi alberghieri totali dei
ricoveri dell’anno scorso con quelli di due anni fa.


e tu hai buttato giu questo?

SELECT year(date())-2 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno) as costo, count(*) as
num_ricoveri
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-2) AND r.reparto=rep.codice
UNION
SELECT year(date())-1 as anno,sum(
(r.data_uscita-r.data_ingresso)*rep.costo_giorno), count(*) as costo
FROM ricoveri r, reparti rep
WHERE year(r.data_uscita)=(year(date())-1) AND r.reparto=rep.codice

o la query di unione fa parte della traccia del professore?



BFS
Continua a leggere su narkive:
Loading...