Author image Christopher Fields
and 1 contributors


Bio::DB::Query::AbstractQuery - Abstract Query class


  # 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"]);


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


Chris Mungall,


The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _


  Usage:  $query->datacollections([$t1,$t2]);      # setting
      OR   return $query->datacollections();  # getting

array reference of strings representing datacollections (eg tables, objects)


  Usage:  $query->add_datacollection($t1, $t2, $t3);

adds datacollections; removes duplicates


  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",
                                     "x=1", "y=2", "z like blah*"],
                                     "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


  Usage:  $query->selectelts([$col1,$col2,$col3]);      # setting
      OR  $eltsref = $query->selectelts();  # getting

array reference of string represnting attributes/elements to be selected


  Usage:  $query->orderelts(\@elts);      # setting
      OR   return $query->orderelts();  # getting


  Usage:  $query->groupelts(\@elts);      # setting
      OR   return $query->groupelts();  # getting


  Usage:  $query->querytype($val);      # setting
      OR   return $query->querytype();  # getting

one of : select, select distinct, insert, update, delete

ignored for now...