Hello everyone!
I'm trying to accomplish the below feat using #graph instead of raw SQL.
*DB["SELECT games.id AS game_id, games.title, games.product_id, *
* games.barcode, games.release_date, *
* regions.alpha_3_code AS region_code, *
* publishers.name AS publisher, developers.name AS
developer*
* FROM games*
* LEFT JOIN regions*
* ON (games.region_id = regions.id)*
* LEFT JOIN game_publishers*
* ON (games.id = game_publishers.game_id)*
* LEFT JOIN publishers*
* ON (game_publishers.publisher_id = publishers.id)*
* LEFT JOIN game_developers*
* ON (games.id = game_developers.game_id)*
* LEFT JOIN developers*
* ON (game_developers.developer_id = developers.id)*
* "]*
The problem is that when I start chaining, it starts using the previous
joined table name for the join conditions. Example:
If I run this code:
* DB[:games].select(*
* :id___game_id, *
* :title,*
* :product_id,*
* :barcode,*
* :release_date*
* ).graph(*
* :regions,*
* {*
* id: :region_id*
* },*
* {*
* join_type: :left,*
* select: [:alpha_2_code___region_code]*
* }*
* ).graph(*
* :game_publishers, *
* {*
* game_id: :id*
* }*
* ).graph(*
* :publishers,*
* {*
* id: :publisher_id*
* },*
* {*
* join_type: :left,*
* select: [:name___publisher]*
* }*
* )*
This sequel produces (most cut out for brevity) :
*LEFT JOIN "regions" ON ("regions"."id" = "games"."region_id") LEFT JOIN
"game_publishers" ON ("game_publishers"."game_id" = "regions"."id")*
I assume I'm not doing this properly, or I'm missing how one sets a table
prefix on the column. (instead of "regions"."id" it should be "games"."id")
Am I using #graph properly? If not, how would I convert the above raw SQL
to Sequel?
Thanks!
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.