[Dbix-class] Newbie question on arbitrary joins
Amelia Ireland
aji at ebi.ac.uk
Thu Oct 16 22:49:46 BST 2008
Hello,
I have a question on joining tables without using the relationships
defined in the DB schema. I can formulate the query in standard SQL,
but getting it into DBIx::Class speak is proving a little tricky.
I have the following set up:
association JOIN term ON association.term_id=term.id
association LEFT JOIN graph_path ON
association.term_id=graph_path.term2_id
association JOIN gene_product ON
association.gene_product_id=gene_product.id
What I want to do is an 'artificial' join on the association table to
match up tables by gene_product_id so that I don't have to include the
extra table in my search.
This is the SQL, with the line I need to DBIx::Class-ize starred:
SELECT term.acc, term_2.acc, me.gene_product_id
FROM association me
LEFT JOIN graph_path graph_path_relations ON
( graph_path_relations.term2_id = me.term_id )
JOIN term term ON ( term.id = me.term_id )
** JOIN association assoc ON ( assoc.gene_product_id =
me.gene_product_id ) ***
LEFT JOIN graph_path graph_path_relations_2 ON
( graph_path_relations_2.term2_id = assoc.term_id )
JOIN term term_2 ON ( term_2.id = assoc.term_id )
WHERE graph_path_relations.term1_id = 'x' AND
graph_path_relations_2.term1_id = 'y'
Can the 'from' and 'join' arguments in a ResultSet be mixed and
matched to create this result without having to do it all via the
'from' argument?
Thanks a lot for any help or advice!
Amelia.
--
Amelia Ireland
GO Editorial Office
http://www.berkeleybop.org || http://www.ebi.ac.uk
BBOP Plant Project: http://bbopgarden.blogspot.com
More information about the DBIx-Class
mailing list