在我們的數據模型中有一個Person。基於值的存在的條件連接表
一個人住在一所房子裏。
一個人可以有一個'訂閱'。 (這與認購的構成無關)
房子可以有一個'訂閱'。
訂閱有訂閱號。
所以,這個datamodel允許一個人直接訂閱,但也可以通過他們的房子。
現在進行查詢。
如果該人通過他們的House進行了訂閱,則與該訂閱相關聯的SubscriptionNumber需要結果。如果不是這種情況,那麼與直接與Person相關的訂閱相關聯的SubscriptionNumber需要結果結果(如果該結果不存在,則爲NULL)。
該查詢的結果將顯示在網格中。我們允許用戶在此列上指定過濾和排序。這意味着兩件事情:
1) We cannot simply specify a CASE in the 'main' select statement and alias that result,
because this disallows us to filter on it, since WHERE is processed before SELECT.
2) For the filtering to be meaningful the result has to be 'put' in one alias
我真正的新DB開發和完全卡死,但是這是我想出直到如今
1) Using a query like this:
SELECT
(CASE
WHEN (House of person has subscription)
THEN (return subscription number of house)
ELSE (return subscription number of person)
END) AS SubscriptionNumber
This leaves me with the exception regarding the unknown column when i try to apply ordering on SubscriptionNumber. Is there some way to avoid this?
2) Joining the 2 tables in the FROM list:
...
FROM People
JOIN (...) AS HouseSubscriptionNumber
JOIN (...) AS PersonSubscriptionNumber
This leaves me with 2 seperate columns, which also disallows my ordering.
我是什麼從概念上講,尋找是一種基於其存在提取任何一種方法的方法。 我一直在摸索與子查詢和工會和各種東西,但我總是得到某種腦循環:-(例如,我可以寫這樣的:
FROM People
JOIN (
SELECT
SubscriptionNumber =
CASE ...
END)
但如何將我加入這主要查詢?
很多的問題! 是否有某種方式來做到這一點?
經過一番測試,結果證明我的需求是一種更有序和更靈活的解決方案,因此我們接受了答案的變化。 – Apeiron