View Full Version : sql avanzato e mysql
Mi chiedevo se era possibile (ne ho la necessità) effettuare query ricorsive del tipo WITH.... UNION ALL con mysql.
Grazie
Soalle
mysql è conforme allo standard del linguaggio sql quindi dovresti poter fare tutto
di with non ne so nulla ma di union son sicurissimo che puoi usarlo :)
x quest'ultimo le tabelle le cui query devi unire devono avere la stessa struttura (nome e tipo di records)
poi puoi fare
SELECT * FROM tabella1 A
UNION
SELECT * FROM tabella1 B union
al posto di union puoi anche mettere UNION ALL che permette di ripetere dei record assolutamente identici
MySql non è full compliant con lo standard SQL '92 soprattutto perchè non supporta sottoquery nel WHERE (anche nel FROM non le supporta, ma quelle nel WHERE sono un po' più gravi visto che mi sembra che siano contemplate anche nello standard precedente)...
voi mi consigliereste mysql o postgres? (pregi e difetti di entrambi)
Dipende dal tipo di lavoro che ci devi fare...
MySQL attualmente lo vedo molto bene in applicazioni Web...perchè è molto veloce e permette di gestire un numero molto alto di query/secondo...magari proprio perchè non può gestire query molto complicate...
Poi, visto che le sue tabelle native (MyISAM) non supoortano le transazioni, ma solamente il locking, si adatta ancora di più al mondo web in cui servono molte query in lettura e poche (e semplici) di update/creazione...
Comunque le transazioni sono supportate sulle tabelle di tipo InnoDB...compreso il log file e quindi il recupero totale da crush...
Sono convinto che, quando in MySQL verrà aggiunta la possibilità di usare subquery (nella 4.1 credo), sarà un osso duro per tutti...anche per quelli commerciali...
Mentre PostgreSQL sembra (perchè non l'ho usato direttamente) un prodotto molto completo e complesso e forse anche per questo un po' più lento ;)
Quindi per il Web ovviamente MySQL...
Per Windows sceglerei MySQL...mi sembra molto stabile e ben integrato (al contrario di PostgreSQL) per Windows...
Per altre applicazioni sarebbe da valutare...anche se per applicazioni molto pese credo che PostgreSQL + Linux sia una scelta obbligata...
l'obiettivo è usarlo per il web ma a me interessava molto la possibilità di fare query ricorsive che non credo si possa con mySQL (con postgres non lo so)... adesso mi allontanerò dal computer per almeno 4-5 giorni poi farò delle prove con entrambi e vi dirò le mie impressioni.
Grazie
Soalle
Che sono le query ricorsive ? Mi fai un esempio ?
ho una tabella "Genitori" con campi Figlio e Genitore mi interessano tutti gli antenati di una data persona:
WITH antenati(Persona,Avo)
AS((SELECT Figlio, Genitore
FROM Genitori)
UNION ALL
(SELECT G.Figlio, A.Avo
FROM Genitori G, Antenati A
WHERE G.Genitore= A.Persona))
SELECT Aco
FROM Antenati
WHERE Persona = 'Pinco Pallino'
Così mi vengono fuori genitori, nonni, bisnonni, etc. di 'Pinco Pallino'
Può anche essere comodo in una tabella del tipo:
per fare il componente A ci vuole il componente B
per fare il componente B ci vuole il componente 2 C
per fare il componente B ci vuole il componente 3 D
etc...
Quanti e quali componenti o sottocomponenti ci vogliono per fare A?
PS: scusami ma per i prox 4 giorni sarò assente e non ti potrò rispondere (mi rubano il computer :(...)
No...non sono proprio possibili queste cose con MySQL...
Non so in PorstgreSQL...
Come ti dicevo PostgreSQL è un po' più compesso :eek:
http://www.brasileiro.net/postgres/cookbook/view-recipes.adp?section_id=310&format=long
grazie mille!!!
Alla fine della prox settimana proverò!!!
Ciao
Soalle
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.