PDA

View Full Version : [MySql]come potrei fare per...


RaouL_BennetH
22-02-2007, 13:53
Data una tabella contenente dei valori tipo:



pippo 5 5 5 5 5 5



Su un'altra tabella verranno memorizzati altri valori tipo:



pippo 4 2 1 3 8 7



Vorrei realizzare una "view" che mi riporti i dati in questa maniera:



//vista della differenza tra il parametro e l'effettivo di pippo:

5 5 5 5 5 5
4 2 1 3 8 7

-1 -3 -4 -2 +3 +2



Plz... :help: :mc: :muro:

RaouL.

yorkeiser
22-02-2007, 14:04
premettendo che non ho mysql nè conosco le tue tabelle, puoi eseguire le sottrazioni direttamente nella clausola SELECT.
Una roba che andrebbe sull'Oracolo sarebbe

SELECT a.campo1-b.campo1, a.campo2-b.campo2 [...]
FROM pippo a, pippo b
WHERE [..]


Nella where devi avere una qualche selezione per non farti comparire tutte le righe del prodotto cartesiano; dipende da come sono fatte le tue tabelle e cosa vuoi ottenere.
Tutto questo, ovviamente, supponendo che il MySql abbia la facoltà di creare viste a partire dalle query

RaouL_BennetH
22-02-2007, 14:16
Grazie del suggerimento :)

La differenza la fa, ma come al solito mi sono espresso male :(

Non riesco a capire come fare per visualizzare la query sottoforma di sottrazione vera e propria, cioè per esempio:

5 5 5 5 5
4 1 3 6 5
------------------
-1 -4 -2 +1 0

Per la rappresentazione del segno "-/+" mi basta invertire l'ordine delle scelte nella query, ma come posso ottenerla a video in quel modo?

shinya
22-02-2007, 15:28
5 5 5 5 5
4 1 3 6 5
------------------
-1 -4 -2 +1 0

Per la rappresentazione del segno "-/+" mi basta invertire l'ordine delle scelte nella query, ma come posso ottenerla a video in quel modo?

Mi sembra una cosa bislacca...


select a,b,c from tab1
union all
select z,w,y from tab2
union all
select '------', null, null
union all
select a-z, b-w, c-y from tab1 join tab2 on ...qualcosa su cui fare la join(non hoi dea di cosa!)


Ma ripeto, mi sembra una stupidaggine dover scrivere una query del genere...
Inoltre per far venir fuori i trattini, tutte le variabili dovrebbero essere stringa, il che vuol dire che dovrai fare un cast o nelle select sopra o nelle sottrazioni sotto...

Scusa ma che ti serve avere una cosa così??! :confused:

RaouL_BennetH
23-02-2007, 11:57
Mi sembra una cosa bislacca...


select a,b,c from tab1
union all
select z,w,y from tab2
union all
select '------', null, null
union all
select a-z, b-w, c-y from tab1 join tab2 on ...qualcosa su cui fare la join(non hoi dea di cosa!)


Ma ripeto, mi sembra una stupidaggine dover scrivere una query del genere...
Inoltre per far venir fuori i trattini, tutte le variabili dovrebbero essere stringa, il che vuol dire che dovrai fare un cast o nelle select sopra o nelle sottrazioni sotto...

Scusa ma che ti serve avere una cosa così??! :confused:


Prima di tutto, grazie :)

Poi, per quanto riguarda i trattini, colpa mia che non mi spiego bene, ma ovviamente non mi servono a nulla. Quello che in pratica mi serve è di ottenere una select che mi mostri a video il parametro di riferimento(quello fisso), quello formato dai parametri variabili della seconda tabella, e che mi mostri la differenza fra i due. Ho anche dimenticato di dirvi che i campi sono di tipo time (per questo nessun problema perchè utilizzo la funzione timediff) in questo modo:


SELECT TIMEDIFF(a.campo1, b.campo1) AS differenza FROM a, b WHERE a.cognome = b.cognome;


Ah, per la precisione .. non è che servano a me vederli così, ma è come mi hanno chiesto di vederli chi utilizzerà questa query.

Grazie ancora per il vostro continuo e prezioso aiuto :ave:

RaouL.