我正在使用尋呼系統。對於我的一些同事,我需要創建一個目錄。目錄中的每個人都有一個PAGER_ID和一個MESSAGING_ID。 PAGER_ID對於給定的分頁設備是唯一的,而MESSAGING_ID對於一個人是唯一的。一個小組可能會輪班工作,並通過一個單一的設備,從班次轉向導致幾個人有相同的PAGER_ID和不同的MESSAGING_ID。這很好,通過設計。如何顯示一對多的一對多關係
對於我們的目錄中的用戶需要以下條件滿足:
- 每個PAGER_ID一次和唯一一次(我知道我可以通過SELECT TOP 1做到這一點的PAGER_ID)
- 一個10現身當PAGER_ID具有十個數字的MESSAGING_ID和一個或多個具有不同數字位數的其他MESSAGING_ID時,數字MESSAGING_ID是首選。
- 如果沒有10位數字的MESSAGING_ID,則將使用任何其他位數的MESSAGING_ID。
簡而言之:他們只想看到一條PAGER_ID/MESSAGING_ID的記錄。他們不關心每個人是否被列入目錄。只要每個PAGER_ID在僅有一個MESSAGING_ID的目錄中顯示,並且只要10個數字的MESSAGING_ID優先於那些不是10個數字的長度,它們就不關心哪個MESSAGING_ID。
我試過TOP和IIF查詢的組合,並且一直無法讓它們以所需的方式在一起玩。
我的基本選擇查詢是:
SELECT
tbl_Amcom_Prod.NAME,
tbl_Amcom_Prod.PAGER_ID,
tbl_Amcom_Prod.MESSAGING_ID
FROM tbl_Amcom_Prod
WHERE
(((tbl_Amcom_Prod.PAGER_ID) Like "241662"
Or (tbl_Amcom_Prod.PAGER_ID) Like "18888"))
ORDER BY tbl_Amcom_Prod.PAGER_ID;
和結果如下:
| NAME | PAGER_ID | MESSAGING_ID |
--------------------------------------------
| TESTER 1 | 18888 | 18888 |
--------------------------------------------
| SMITH, MARK | 18888 | 5735551262 |
--------------------------------------------
| SUPERVISOR | 241662 | 102621 |
--------------------------------------------
| JOHN, JONES | 241662 | 101436 |
--------------------------------------------
| SEEGER, ROBERT | 241662 | 101409 |
--------------------------------------------
他們希望看到這樣的:
| NAME | PAGER_ID | MESSAGING_ID |
--------------------------------------------
| SMITH, MARK | 18888 | 5735551262 |
--------------------------------------------
| SUPERVISOR | 241662 | 102621 |
--------------------------------------------
任何想法?
非常感謝HansUp!這正是我想要做的。抱歉,登記,測試和評論花了很長時間。當然,老闆讓我有另一個難題!我很可能會在這裏發佈。 – mdames