次のクエリがあります。
SELECT
"metaCAE"."family",
"metaCAE"."name",
COUNT(1) AS "count"
FROM
"userHistoryProfessional"
INNER JOIN
"company_metaCAE"
ON (
"company_metaCAE"."id_company" = "userHistoryProfessional"."id_company"
)
INNER JOIN
"metaCAE"
ON (
"metaCAE"."id" = "company_metaCAE"."id_metaCAE"
)
WHERE
"userHistoryProfessional"."dateUntil" IS NULL
GROUP BY
"metaCAE"."family"
ORDER BY
"count" DESC;
metaCAE テーブルのスキーマは次のとおりです。
id
level
family
name
複数の名前が同じファミリーに属しており、1 つの名前だけがそのファミリーの親であり、最低レベル (1) を持っています。
id 列を除く例:
level family name
1 A Pork
2 A Pork-Products
3 A Pork-Products Incorporated
1 B Cork
2 B Cork-Products
3 B Cork-Products Incorporated and Sons
3 B Cork Incorporated
問題は、各ファミリの親レベル (1) の名前だけを結合に表示したいのですが、company_metaCAE.id_metaCAE は metaCAE テーブルから子レベルの名前 (実際の会社名) のみを参照することです。
したがって、私がやりたいことは、子レベル名を対応する親レベル名に置き換えた結果を得ることです。私のスキーマでは、それは最低レベルで同じファミリーを持つ名前です。
したがって、この結果の代わりに:
family count family-name
A 1 Pork-Products Incorporated
B 2 Cork Incorporated
私は次のようなものが欲しい
family count family-name
A 1 Pork
B 2 Cork