Hi Alberto,
On Fri, 08 Feb 2002 09:26:14 +0100
"Alberto P." <avmap75@inwind.it> wrote
concerning "[ROOT] A simple help...":
> Dear all,
> is there anyone who has used the SQL interface to TTree, and can give me
> an example about how to use SQL statements with the TTrees?
The short story: You can't.
The long story: You _must_ use the normal TSelector syntax, that is
<variable list>, <selection>
for example
typedef struct Foo {
Float_t x, y, z;
} Foo_t;
Foo foo;
TTree* tree = new TTree("T", "T");
tree->Branch("foo", &tuple, "x/f:y:z");
...
TSQLResult* res = tree->Query("foo.x:foo.y", "foo.x > 100");
TSQLRow* row = 0;
while ((row = res->Next()))
cout << "Row: " << row->GetEntry(0) <<
<< ", " << row->GetEntry(0) << endl;
It would be nice if one could do
TQSLResult* row = tree->Query("SELECT x, y FROM foo WHERE x > 100");
but that requires writing a SQL parser that translates SQL to the
TSelector syntax. Such an interface would make the access to a ROOT
file, MySQL, PostGreSQL, Oracle, SapDB, etc. access completly
transparant:
TSQLServer* server = TSQLServer::Connect(<db>);
TQSLResult* row = server->Query("SELECT x, y FROM foo WHERE x > 100");
where
<db> := <backend> :// <host> / <db>
<backend> := root
| mysql
| pgqsl
| oracle
| sapdb
| ...
<host> := <ip-address or host name>
| <ip-address or host name> : <port>
<ip-address or host name> := <ip-address>
| <host name>
And a transaction based rootd could then effectively make ROOT a real
viable alternative to Objectivity both for buisness and academia. :-)
Ofcourse, all this takes time and effort to implement, which is not
avaliable in bunches :-(
Yours,
Christian Holm Christensen -------------------------------------------
Address: Sankt Hansgade 23, 1. th. Phone: (+45) 35 35 96 91
DK-2200 Copenhagen N Cell: (+45) 28 82 16 23
Denmark Office: (+45) 353 25 305
Email: cholm@nbi.dk Web: www.nbi.dk/~cholm
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:41 MET