Adding 'concat' custom column changes results in standard columns

I have joined several tables to produce a customized report of client leads. Within this I have 1 table with client details and another with employee details. Both tables have fields called 'Firstname' and 'Lastname'.

I can successfully create report which displays the client lead info, including the client 'Firstname' and 'Lastname' columns, as well as the employee 'Firstname' and 'Lastname' columns.

However, I then want to create a custom column to create a link to the client record, which is based on standard url root, plus the clientid. I can successfully do this, but when I create the custom column, it then changes the employee 'Firstname' and 'Lastname' columns. These then start displaying the client name, not the employee name.

This is the sql without the custom column :slight_smile:SELECT "public"."hestia_lead_requests"."email" AS "email", "public"."hestia_lead_requests"."type" AS "type", "Hestia Lead Sources"."name_en" AS "name_en", "Hestia Client Clients"."createdat" AS "createdat", "Hestia Client Clients"."firstname" AS "firstname", "Hestia Client Clients"."lastname" AS "lastname", "Hestia Property Properties"."owner" AS "owner", "Hestia User Users"."firstname" AS "firstname_2", "Hestia User Users"."lastname" AS "lastname_2"
FROM "public"."hestia_lead_requests"
LEFT JOIN "public"."hestia_lead_sources" "Hestia Lead Sources" ON "public"."hestia_lead_requests"."sourceid" = "Hestia Lead Sources"."id" LEFT JOIN "public"."hestia_client_clients" "Hestia Client Clients" ON "public"."hestia_lead_requests"."clientid" = "Hestia Client Clients"."id" LEFT JOIN "public"."hestia_property_properties" "Hestia Property Properties" ON "public"."hestia_lead_requests"."propertyid" = "Hestia Property Properties"."id" LEFT JOIN "public"."hestia_user_users" "Hestia User Users" ON "Hestia Property Properties"."owner" = "Hestia User Users"."id" LEFT JOIN "public"."hestia_user_users_groups" "Hestia User Users Groups" ON "Hestia User Users"."id" = "Hestia User Users Groups"."userid" LEFT JOIN "public"."hestia_user_groups" "Hestia User Groups" ON "Hestia User Users Groups"."groupid" = "Hestia User Groups"."id"
WHERE ("Hestia User Groups"."alias" = TRUE
AND CAST("Hestia User Users Groups"."_sdc_batched_at" AS date) BETWEEN CAST((CAST(now() AS timestamp) + (INTERVAL '-1 day')) AS date) AND CAST(now() AS date) AND "Hestia Client Clients"."createdat" BETWEEN timestamp with time zone '2021-03-01 00:00:00.000+01:00' AND timestamp with time zone '2021-05-01 00:00:00.000+02:00' AND "Hestia User Groups"."name" = 'Alps')
LIMIT 1048576

And this is the sql with the custom column :
SELECT "source"."email" AS "email", "source"."type" AS "type", "source"."test" AS "test", "source"."name_en" AS "name_en", "source"."createdat" AS "createdat", "source"."firstname" AS "firstname", "source"."lastname" AS "lastname", "source"."owner" AS "owner", "source"."firstname" AS "firstname_2", "source"."lastname" AS "lastname_2"
FROM (SELECT concat("public"."hestia_lead_requests"."clientid", "Hestia Client Clients"."firstname") AS "test", "public"."hestia_lead_requests"."sourceid" AS "sourceid", "Hestia Lead Sources"."id" AS "id", "public"."hestia_lead_requests"."clientid" AS "clientid", "Hestia Client Clients"."id" AS "id_2", "public"."hestia_lead_requests"."propertyid" AS "propertyid", "Hestia Property Properties"."id" AS "id_3", "Hestia Property Properties"."owner" AS "owner", "Hestia User Users"."id" AS "id_4", "Hestia User Users Groups"."userid" AS "userid", "Hestia User Users Groups"."groupid" AS "groupid", "Hestia User Groups"."id" AS "id_5", "Hestia User Groups"."alias" AS "alias", "Hestia User Users Groups"."_sdc_batched_at" AS "_sdc_batched_at", "Hestia Client Clients"."createdat" AS "createdat", "Hestia User Groups"."name" AS "name", "public"."hestia_lead_requests"."email" AS "email", "public"."hestia_lead_requests"."type" AS "type", "Hestia Lead Sources"."name_en" AS "name_en", "Hestia Client Clients"."firstname" AS "firstname", "Hestia Client Clients"."lastname" AS "lastname", "Hestia User Users"."firstname" AS "firstname_2", "Hestia User Users"."lastname" AS "lastname_2" FROM "public"."hestia_lead_requests"
LEFT JOIN "public"."hestia_lead_sources" "Hestia Lead Sources" ON "public"."hestia_lead_requests"."sourceid" = "Hestia Lead Sources"."id" LEFT JOIN "public"."hestia_client_clients" "Hestia Client Clients" ON "public"."hestia_lead_requests"."clientid" = "Hestia Client Clients"."id" LEFT JOIN "public"."hestia_property_properties" "Hestia Property Properties" ON "public"."hestia_lead_requests"."propertyid" = "Hestia Property Properties"."id" LEFT JOIN "public"."hestia_user_users" "Hestia User Users" ON "Hestia Property Properties"."owner" = "Hestia User Users"."id" LEFT JOIN "public"."hestia_user_users_groups" "Hestia User Users Groups" ON "Hestia User Users"."id" = "Hestia User Users Groups"."userid" LEFT JOIN "public"."hestia_user_groups" "Hestia User Groups" ON "Hestia User Users Groups"."groupid" = "Hestia User Groups"."id") "source"
WHERE ("source"."alias" = TRUE
AND CAST("source"."_sdc_batched_at" AS date) BETWEEN CAST((CAST(now() AS timestamp) + (INTERVAL '-1 day')) AS date) AND CAST(now() AS date) AND "source"."createdat" BETWEEN timestamp with time zone '2021-03-01 00:00:00.000+01:00' AND timestamp with time zone '2021-05-01 00:00:00.000+02:00' AND "source"."name" = 'Alps')
LIMIT 1048576

It looks like this is because to create the custom column, Metabase converts the joined table into a single table called 'source'. This then means that it cannot tell the difference between fields from the joined tables which have the same name

Hi @JScott
You're seeing this issue:
https://github.com/metabase/metabase/issues/14255 - upvote by clicking :+1: on the first post