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...