Итак, у меня сложная (для меня) проблема с проблемной базой данных, и я надеюсь, что вы, ребята, сможете мне помочь.Во-первых, позвольте мне установить сцену.Кажется, база данных была скопирована из какого-то предыдущего воплощения в ее текущий движок базы данных.То, что было скопировано, похоже на имена таблиц и столбцов, типы и длины полей и содержимое.Во всей базе данных нет первичных или внешних ключей.Кроме того, старая база данных не была нормализована, а текущая база данных не нормализована.Чтобы сделать его немного веселее, у меня нет возможности перестроить его или что-то изменить.Единственное, что я могу сделать, это выполнить запросы на выборку.
В этой ситуации у меня есть следующие соответствующие таблицы и столбцы:
Table:
Facilities
Columns:
Asset_ID (bigint)
Asset_Category (bigint)
Table:
Gardens
Columns:
Asset_ID (bigint)
Asset_Category (bigint)
Table:
Equipment
Columns:
Asset_ID (bigint)
Asset_Category (bigint)
Table:
Structures
Columns:
Asset_ID (bigint)
Asset_Category (bigint)
Каждая из них имеет одинаковые типы информации.Например, Услуги могут содержать газонокосилку, и Сады могут также содержать газонокосилку.Как я уже сказал, это не нормализуется.Таким образом, данные добавлялись в разные таблицы без учета их полезности или нормализации.Каждое поле идентификатора является bingint, и это примерно так же полезно, как это поле получает.
Кроме того, у меня есть следующие таблицы:
Table:
Depots
Columns:
ID (bigint)
Name (varchar)
Table:
Area
Columns:
ID (bigint)
Site_ID (bigint)
Name (varchar)
Table:
Asset_Category
Columns:
Type_ID (bigint)
Category_ID (bigint)
Category_Name (varchar)
Table:
Depot_Assets
Columns:
Depot_ID (bigint)
Asset_ID (bigint)
Table:
Facility_Assets
Columns:
Asset_ID (bigint)
Category (bigint)
Теперь я предполагаю, что Asset_IDs и Category_IDs каким-то образоммагически совпадают между таблицами, что есть некоторая степень согласованности, но, учитывая, что нет ключей и нет нормализации, невозможно определить на этом этапе.
Меня попросили составить отчет, показывающий числоактивов каждой категории в каждом месте.Я попытался объединить результаты из этих первых четырех таблиц следующим образом:
inner join
(select "Asset_ID", "Category" from "Facilities" union all
select "Asset_ID", "Category" from "Gardens" union all
select "Asset_ID", "Category" from "Equipment" union all
select "Asset_ID", "Category" from "Structures") as temp
on (temp."Category" = "Asset_Category"."Category_ID")
Но помимо этого я абсолютно заблудился относительно того, как получить список активов в каждой категории, назначенных для каждого местоположения (по Area.Name).
Буду признателен за любую помощь и объяснения.