我有我的數據庫中的三個表,讓我們稱他們爲: 1. VALUE_TYPE 2.值 3.機構單位哪些錯誤與此MySQL查詢 - 左外連接
每個值有一個外鍵引用一個value_type和一個組織。此外,每個值類型也有一個默認值。
我正在嘗試爲所有組織執行左外部聯接,以便如果值表中存在記錄,它將返回該記錄中的值,並且如果該記錄不存在,則將採用默認值value_type表。但是,當我運行以下查詢時,它將爲所有組織中的記錄不存在於值表中的所有組織返回空值。
SELECT
o.id as org_id,
o.name as org_name,
case when vals.choice is null then vals.default_value else vals.choice END as select_choice,
vals.choices as choices
FROM orgs o
LEFT OUTER JOIN
(SELECT
v.id as id,
v.choice as choice,
v.org_id as org_id,
v.name as val_name,
vt.default_value as default_value,
vt.choices as choices
FROM value v
INNER JOIN value_type vt ON v.value_type = vt.id
WHERE vt.name = 'xyz') vals
ON vals.org_id = o.id
好吧...如果vals.org_ID不存在o.id,那麼所有vals.records都將爲null,因此您的case語句將始終爲這樣的記錄返回Null值。換句話說,因爲組織中沒有val的記錄,所以不能以這種方式得到默認值。 – xQbert
value_type和orgs如何關聯?我們如何知道爲組織選擇了什麼樣的價值類型,或者爲什麼你只限於'xyz'的vt.name?這隻會導致1條記錄? – xQbert
通常如果你想要一個默認值,它不是基於外鍵關係,它是一個特殊的行,被認爲是默認值,而不是與該值相同行中的另一列。您可以通過單獨的連接來獲得該行的ID。你能展示一些樣本數據和預期結果嗎? – Barmar