On Wed, Nov 10, 2021 at 7:14 AM Billy Zheng <[email protected]> wrote:

> Please see a example.
>
> I have a table, name institutions, and exists a :name column.
>
> Following is SQL generate by Sequel, please notice, there is a alias like
> this:
>
> stock"."name" AS "stock_name"
>

This is expected.  Without this alias, the identifier symbol used for the
returned column would be "name", which would clash with the "name" from
"institutions"."name".  Sequel's graphing code always tries to generate
unique aliases.


> ```
> SELECT "institutions"."id", "institutions"."name",
> "institutions"."number_of_holding", "instit
> utions"."market_value", "institutions"."percent_of_shares_for_stock",
> "institutions"."percent_
> of_shares_for_institution", "institutions"."quarterly_changes_percent",
> "institutions"."quarte
> rly_changes", "institutions"."market_value_dollar_string",
> "institutions"."holding_cost", "ins
> titutions"."date", "institutions"."created_at", "institutions"."stock_id",
> "institutions"."fir
> m_id", "stock"."id" AS "stock_id_0", "stock"."name" AS "stock_name",
> "stock"."exchange_id", "s
> tock"."percent_of_institutions", "stock"."ipo_price",
> "stock"."ipo_amount", "stock"."ipo_place
> ment", "stock"."ipo_date", "stock"."ipo_average_price",
> "stock"."ipo_placement_number", "stock
> "."next_earnings_date", "exchange"."id" AS "exchange_id_0",
> "exchange"."name" AS "exchange_nam
> e", "firm"."id" AS "firm_id_0", "firm"."name" AS "firm_name",
> "firm"."display_name" FROM "inst
> itutions" LEFT OUTER JOIN "stocks" AS "stock" ON ("stock"."id" =
> "institutions"."stock_id") LE
> FT OUTER JOIN "exchanges" AS "exchange" ON ("exchange"."id" =
> "stock"."exchange_id") LEFT OUTE
> R JOIN "firms" AS "firm" ON ("firm"."id" = "institutions"."firm_id") ORDER
> BY "stock"."name"
> ```
>
> Then i remove :name column use sequel migration, then run same code, get
> following new SQL.
>

In this query, there is no "institutions"."name", so there is no reason to
alias "stock"."name" in order to disambiguate.


>
> SELECT "institutions"."id", "institutions"."number_of_holding",
> "institutions"."market_value",
> "institutions"."percent_of_shares_for_stock",
> "institutions"."percent_of_shares_for_instituti
> on", "institutions"."quarterly_changes_percent",
> "institutions"."quarterly_changes", "institut
> ions"."market_value_dollar_string", "institutions"."holding_cost",
> "institutions"."date", "ins
> titutions"."created_at", "institutions"."stock_id",
> "institutions"."firm_id", "stock"."id" AS
> "stock_id_0", "stock"."name", "stock"."exchange_id",
> "stock"."percent_of_institutions", "stock
> "."ipo_price", "stock"."ipo_amount", "stock"."ipo_placement",
> "stock"."ipo_date", "stock"."ipo
> _average_price", "stock"."ipo_placement_number",
> "stock"."next_earnings_date", "exchange"."id"
> AS "exchange_id_0", "exchange"."name" AS "exchange_name", "firm"."id" AS
> "firm_id_0", "firm".
> "name" AS "firm_name", "firm"."display_name" FROM "institutions" LEFT
> OUTER JOIN "stocks" AS "
> stock" ON ("stock"."id" = "institutions"."stock_id") LEFT OUTER JOIN
> "exchanges" AS "exchange"
> ON ("exchange"."id" = "stock"."exchange_id") LEFT OUTER JOIN "firms" AS
> "firm" ON ("firm"."id
> " = "institutions"."firm_id") ORDER BY "stock"."name"
>
> The strange things is, why the first SQL generate stock"."name" AS
> "stock_name", and the second SQL not create alias like "AS "stock_name" ?
>

It's needed for disambiguation in the first case, but not in the second
case.

Thanks,
Jeremy

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/sequel-talk/CADGZSSdcfMW-EJUT7jRCaZ27LizdUL8AqKFygnF_8qma7oA0pg%40mail.gmail.com.

Reply via email to