我是一個 Access 菜鳥,我試圖弄清楚如何從橋接表上的兩個主鍵創建第三個“值”。這甚至可能嗎?我可能沒有正確解釋這一點。
對于我的示例,我有來自單獨表的 ProvCode 和 CountryCode 的主鍵,這些表已放入橋接表中,因為我希望這些鍵的組合值填充另一個表上名為 TravelLocation 的欄位...
這是我到目前為止所得到的:

有什么建議么?還是我在嘗試做一些不可能的事情?我一直試圖弄清楚復合鍵是否可以做到這一點,但我不知道如何創建一個復合鍵而不是復合鍵。
我創建了 Bridge 表來將我需要的兩個值組合在一起,但我不知道如何將這兩個值從 BridgeTable 獲取到我的 TravelLocation 表。
uj5u.com熱心網友回復:
不要重復自己被認為是最佳實踐,因此請在需要時計算代碼。另外,我建議使用一些不同的表結構,例如旅行,并包括多對多關系。
可怕的例子,但希望有啟發性:
考慮進行多次旅行的客戶可能是最重要的,并且許多客戶可以進行同一次旅行。因此,將客戶和旅行建模為多對多關系是有道理的。理論上,進一步的旅行可能涉及許多地點。TripsLocales 應該命名為 TripsResorts,并且是多對多關系的聯結表。客戶地址資訊的行為與度假村相同,只是被省略了。

'starting with the resorts table
-----------------------------------------------------------------------------------------------------------------------------------
| ResortID | ResortTypeID | ResortName | CountryID | ProvinceStateID | ResortCode |
-----------------------------------------------------------------------------------------------------------------------------------
| 1 | 1 | Riza Resort | 1 | 1 | |
-----------------------------------------------------------------------------------------------------------------------------------
| 2 | 2 | starbase hilton | 2 | 2 | |
-----------------------------------------------------------------------------------------------------------------------------------
| 3 | 1 | kronos temple | 3 | 3 | |
-----------------------------------------------------------------------------------------------------------------------------------
| 4 | 1 | vulcan temple | 4 | 4 | |
-----------------------------------------------------------------------------------------------------------------------------------

'it is often easier to split a job into pieces. first calculate the codes for each country and province
'calculate your code your way; I was trying for cooler codes
SELECT Countries.CountryID, ProvincesStates.ProvStateID, [Countries].[CountryName] & [ProvincesStates].[ProvName] AS code
FROM Countries INNER JOIN ProvincesStates ON Countries.CountryID = ProvincesStates.CountryID;
'gives:
----------------------------------------------------------------------
| CountryID | ProvStateID | code |
----------------------------------------------------------------------
| 1 | 1 | Rizapalace |
----------------------------------------------------------------------
| 2 | 2 | Earthawesome |
----------------------------------------------------------------------
| 3 | 3 | Kronostime temple |
----------------------------------------------------------------------
| 4 | 4 | Vulcantemple |
----------------------------------------------------------------------

'then show a new table just like the resorts table but with the codes
SELECT Resorts.ResortCode
FROM Resorts INNER JOIN resortcodes ON (Resorts.CountryID = resortcodes.CountryID) AND (Resorts.ProvinceStateID = resortcodes.ProvStateID);
'you can go ahead and update the Resorts table if you want
'after selecting the update tab as shown Update:
UPDATE Resorts INNER JOIN resortcodes ON (Resorts.CountryID = resortcodes.CountryID) AND (Resorts.ProvinceStateID = resortcodes.ProvStateID) SET Resorts.ResortCode = [resortcodes].[code];
'gives:
-----------------------------------------------------------------------------------------------------------------------------------
| ResortID | ResortTypeID | ResortName | CountryID | ProvinceStateID | ResortCode |
-----------------------------------------------------------------------------------------------------------------------------------
| 1 | 1 | Riza Resort | 1 | 1 | Rizapalace |
-----------------------------------------------------------------------------------------------------------------------------------
| 2 | 2 | starbase hilton | 2 | 2 | Earthawesome |
-----------------------------------------------------------------------------------------------------------------------------------
| 3 | 1 | kronos temple | 3 | 3 | Kronostime temple |
-----------------------------------------------------------------------------------------------------------------------------------
| 4 | 1 | vulcan temple | 4 | 4 | Vulcantemple |
-----------------------------------------------------------------------------------------------------------------------------------
作為下一步,可以從旅行中洗掉旅行成本,并且可以將逗留成本添加到 TripLocales。然后,當您需要 TripCost 時,您可以計算它。然后作為下一步將staycost 替換為roomrate ......
編輯:country.countryid 和resort.countryid 之間存在不必要的直接聯系,部分答案留在剪輯室地板上。它既展示了您在非規范化方面可以擺脫的困境,更重要的是展示了表結構的更改如何不會改變您需要的資料視圖,而只需更改您撰寫的 sql 來轉換規范化表到該視圖中。有幾次我一直在努力解決這個問題,它總是根據導致我可以撰寫 sql 的方式來解決。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/529033.html
標籤:毫秒访问复合键复合键
上一篇:節點Azure功能在本地作業,但在Azure中不起作用
下一篇:報表中的條件求和函式
