NAME
Bio::DB::Query::AbstractQuery - Abstract Query class
SYNOPSIS
# Don\'t use this class directly; use one of the subclasses (eg
# SqlQuery, BioQuery)
$q
=
$queryclass
->new;
$q
->datacollections([
"table1 t1"
,
"table2 t2"
]);
$q
->selectelts([
"t1.colA"
,
"t2.colB"
]);
$q
->where(
"or"
,
"colA=x"
,
"colB=y"
);
$q
->orderelts([
"t1.colA"
,
"t2.colB"
]);
DESCRIPTION
Core methods for representing some kind of query - eg a query expressed in an human type language, an SQL query, an object oriented query.
Abstracted attribute names have been used; eg a query is assumed to be over some kind of collection of data. the query is performed over a subset of this data, a set of datacollections. These datacollections are equivalent to tables in SQL and object adaptors when forming an OO query.
The where clause / constraints is represented by the QueryConstraint composite object
CONTACT
Chris Mungall, cmungall@fruitfly.org
APPENDIX
The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
datacollections
Usage:
$query
->datacollections([
$t1
,
$t2
]);
# setting
OR
return
$query
->datacollections();
# getting
array reference of strings representing datacollections (eg tables, objects)
add_datacollection
Usage:
$query
->add_datacollection(
$t1
,
$t2
,
$t3
);
adds datacollections; removes duplicates
where
Usage:
$query
->where(
"and"
,
"att1 = val1"
,
"att2=val2"
);
# setting
OR
$query
->where(
"att1 = val1"
);
# setting
OR
$query
->where({
att1
=>
$val1
,
att2
=>
$val2
});
# setting
OR
$query
->where([
"OR"
,
[
"AND"
,
"x=1"
,
"y=2"
,
"z like blah*"
],
[
"AND"
,
"x=5"
,
"y=7"
,
"z like wow*"
]]);
OR
$qc
=
$query
->where();
# getting
of type Bio::DB::Query::QueryConstraint
this method is liberal in what it accepts.
see the new() method of Bio::DB::Query::QueryConstraint
it will turn hashes into an ANDed query constraint composite, with each component being a name=value pair. it will turn arrays into an ANDed constraint composite, breaking up each element around the = symbol. if the first element of the array is a valid composite operand (e.g. "or") it will combine the array elements using this.
Or you can just feed it a Bio::DB::Query::QueryConstraint object
selectelts
Usage:
$query
->selectelts([
$col1
,
$col2
,
$col3
]);
# setting
OR
$eltsref
=
$query
->selectelts();
# getting
array reference of string represnting attributes/elements to be selected
orderelts
Usage:
$query
->orderelts(\
@elts
);
# setting
OR
return
$query
->orderelts();
# getting
groupelts
Usage:
$query
->groupelts(\
@elts
);
# setting
OR
return
$query
->groupelts();
# getting
querytype
Usage:
$query
->querytype(
$val
);
# setting
OR
return
$query
->querytype();
# getting
one of : select, select distinct, insert, update, delete
ignored for now...