Newsgroup: it.comp.www.php
Titolo: sottrazioni in sql

Ho fatto uno script in php con database mysql che sul mio computer funziona
benissimo (phptriad) ma sul server non riesce a compiere una sottrazione
all'interno di una query SELECT
$dati=mysql_query("SELECT * FROM tabella ORDER BY a - b desc");
Cioé dovrei fare in modo che prenda i valori delle colonne a e b e li
sottragga mettendoli in ordine decrescente.
Probabilmente sul server c'è una versione mysql più vecchia ma non so
quale... qualcuno può aiutarmi?

 wrote in message
BHOj7.175$MO....@news.infostrada.it...

Scusa se vuoi che ti prende la sottrazione dei 2 campi perchè fai SELECT *?
Non credo si possa fare una sottrazione nell'ORDER BY , infatti mi stupisce
che ti funzioni sul tuo pc.
Prova con
SELECT (a - b) campo_sottr FROM tabella ORDER BY campo_sottr desc
dove campo_sottr è l'alias che dai al tuo campo calcolato.
In questo modo ti estrae x ogni record della tua tabella il campo a meno il
campo b.
Fammi sapere come va...
ciao
Alessandro Zenoni

 ha scritto nel messaggio
news:9mqhla$ij7$1...@nreada.inwind.it...


 wrote in message
Hr6k7.7535$MO.2...@news.infostrada.it...


Non l'ho provata... Ma:
SELECT * FROM tabella ORDER BY (a - b) desc"
oppure
SELECT * FROM tabella ORDER BY (tabella.a - tabella.b) desc"


Grazie  cosě funziona :)
Il fatto č che in locale funziona come mi ha consigliato fermat cioé con la
le parentesi... Purtroppo sul server se solo vede una parentesi salta tutto
:(
Grazie a tutti :)

che ti funzioni sul tuo pc.
Si' che si puo'.
kowalski=> insert into test(aut1,aut2) values(1,2);
INSERT 9388609 1
kowalski=> insert into test(aut1,aut2) values(3,4);
INSERT 9388610 1
kowalski=> insert into test(aut1,aut2) values(5,6);
INSERT 9388611 1
kowalski=> select * from test order by aut2-aut1;
ERROR:  Unable to identify an operator '-' for types 'varchar' and
'varchar'
        You will have to retype this query using an explicit cast
kowalski=> select * from test order by aut2::int4-aut1::int4;
ERROR:  Cannot cast type 'varchar' to 'int4'
kowalski=> select * from test order by atoi(aut2)-atoi(aut1); -- 'fanculo
 inizio | fine | aut1 | aut2 | aut3
--------+------+------+------+------
        |      | 1    | 2    |
        |      | 3    | 4    |
        |      | 5    | 6    |
(3 rows)
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.

 kowalski=> select * from test order by atoi(aut2)-atoi(aut1); -- 'fanculo
                                                                ^^^^^^^^^^^
Condizione necessaria o solo sufficiente? :-)
--ev



Dopo tre errori di sintassi inseriti per mia colpa, divento
irrazionalmente volgare :-)
Una volta mi sabotarono la tastiera per sentire i moccoli.


 irrazionalmente volgare :-)
Peccato. Vorrei i sorgenti di Postgres patchati per fagli leggere i
commenti volgari e per farlo sentire una nullità, così da fargli capire
la mia soddisfazione nel fare certe cose!
Spero nei prossimi sviluppi dell'AI!
Ciao
--ev 






rumenta=> select eliza('Hello');
HOW DO YOU DO...PLEASE STATE YOUR PROBLEM.
rumenta=> select eliza('I am working to an implementation of Eliza for
PostgreSQL.');
DID YOU COME TO ME BECAUSE YOU ARE WORKING TO AN IMPLEMENTATION OF ELIZA
FOR POSTGRESQL  ?
rumenta=> select eliza('Yes, I did. Well, it was mostly to show off.');
IS SHOWING OFF IMPORTANT TO YOU  ?
rumenta=> select eliza('You betcha!');
WE WERE DISCUSSING YOU - NOT ME.
Leonardo "no, _non e'_ uno scherzo"


 Leonardo "no, _non e'_ uno scherzo"
Se mi dici che Eliza non č uno scherzo ci credo, se mi dici che ci
giochi con Postgres _non_ ci credo!
Ciao
--ev

giochi con Postgres _non_ ci credo!
Vogliamo farci una piccola scommessina? 8-D
(PostgreSQL 7.1 on i686-pc-linux-gnu, compiled by GCC 2.95.2)
Leonardo


 (PostgreSQL 7.1 on i686-pc-linux-gnu, compiled by GCC 2.95.2)
Urk! :-)
Sapevo che non dovevo lanciare la sfida!!
Cmq questa cosa mi pare assurda ... Eliza reimplementato (da te?) sotto
postgres? Esiste mica un link??
(poi basta che l'AI ci sta portando Ottě!)
Ciao

postgres? Esiste mica un link??
Solo
	file://usr/src/postgres-functions/fun/eliza
...e, ripeto, e' un GROSSO pre-alfa (della serie: crasha il postmaster).
In beta stabile, fra la roba riferibile[1], ho roba piu' in topic:
	file://usr/src/postgres-functions/aton/numero
	Una funzione che, dato un numero in cifre, lo traduce in lettere in
	italiano (1234 -> 'mille duecentotrentaquattro')
	file://usr/src/postgres-functions/aton/numerics
 
	Una funzione per ripulire il denaro sporco:
	'Lit. 234.000 + IVA'  -> 234000
	(ATTENZIONE: numerics('12.34') = 1234, non 12.34)
	file://usr/src/postgres-functions/datetime/datetime
	Una funzione per fare in SQL quello che si fa meglio col PHP:
	select dateformat('d-m-Y H:i:s',date_part('epoch',now()));
		           ^^^^^^^^^^^ ricorda nulla la sintassi?
	     dateformat
	---------------------
	 06-09-2001 14:53:19
	(1 row)
Per poche richieste mando in mail, per troppe mi serve un volontario con
dello spazio web a disposizione 8-D
Leonardo
[1] ci sono altre directories ma sono, per ora, "Trop Segret"


 dello spazio web a disposizione 8-D
www.supereva.it
, 
www.geocities.com
 ... :-))))
Io mi ricordo di un 
linuxvalley.com/~lserni
 .... Mica risponde più ...
Ma spiegami un pochetto: tu hai tutte queste funzioncine spaziali (e
alcune assurde, eliza in primis!!), ma per usarle? Intendo, devono
essere compilate DENTRO ad un postgres in fasce durante il fatidico make
o possono essere usate con un postgres già bello cresciutello?
Cmq, se vuoi ci sentiamo in email:
$ perl -e 'print pack("C7", 101,100,118,97,108,115,101)."\@
tin.it
\n"'
;-)
Ciao
--ev che 'basta spam' e basta OT!!

o possono essere usate con un postgres gią bello cresciutello?
La seconda. La seconda c'hai detto.
\connect - postgres
create function numerics (text) returns float8
                as '/tmp/numeric.so'
                language 'c';
SELECT numerics('PIPPO');
SELECT numerics('1234PIPPO');
SELECT numerics('PIPPO1234');
SELECT numerics('1234');
SELECT numerics(NULL);
DROP function numerics(text);
Questo era un semplice script PostgreSQL per vedere se la funzione funzava
oppure no (com'e' ovvio, all'inizio aveva grossa grisi).
Ovviamente io ti do' il sorgente, poi sul mio sistema ad esempio
create function numero(int4) returns bpchar
                as '/usr/src/postgres-functions/numero.so'
                language 'c'
gcc -I../postgresql-7.1/src/backend -Iinclude -O3 -Wall -mpentiumpro    \
        -fPIC -shared                                                   \
        -o numero.so numero.c
C'e' il problema che servono i sorgenti di PostgreSQL o almeno del backend
per compilare i moduli; oppure anche solo i files di "include" specificati
nel sorgente (di solito "postgres.h", "fmgr.h" e "utils/builtins.h").
Leonardo
