2017-08-03 83 views
1

首先,表名和佈局:我需要MySQL子查詢嗎?我怎樣才能得到這些結果?

table names & layouts

這裏是我想要的結果:

Desired Results

這裏是 '得了雅'(伎倆)我想..

我只會通過一個(動態)imis_id/user_id(col名稱目前不匹配一個表)...

所以查找(選擇)將需要在關係表做了,在(動態)ID過去了..並在那裏current_org = 1

這將讓/給我的目標org_id中,我需要獲取所有用戶信息(與org_id關聯)..以及所有組織詳細信息。

這是一個弱/失敗的嘗試:(它使用硬編碼的org_id),這是無效的..我只需要通過在user_id/imis_id ..和current_org = 1來獲得目標org_id。

SELECT genealogy_orgs.org_id, genealogy_orgs.org_name, 
genealogy_relations.user_id, genealogy_relations.relation_type, genealogy_relations.start_year, genealogy_relations.end_year, 
genealogy_users.imis_id, genealogy_users.full_name 
FROM genealogy_orgs 
INNER JOIN genealogy_relations ON genealogy_orgs.org_id = genealogy_relations.org_id 
INNER JOIN genealogy_users ON genealogy_relations.user_id = genealogy_users.imis_id 
WHERE genealogy_orgs.org_id = '84864'; 

這裏是另一個失敗的嘗試(只返回1行)..但採用正確的標準:

SELECT 
genealogy_relations.org_id, 
genealogy_relations.user_id, genealogy_relations.relation_type, genealogy_relations.start_year, genealogy_relations.end_year, 
genealogy_users.imis_id, genealogy_users.full_name, 
genealogy_orgs.org_name 
FROM genealogy_relations 
INNER JOIN genealogy_orgs ON genealogy_relations.org_id = genealogy_orgs.org_id 
INNER JOIN genealogy_users ON genealogy_relations.user_id = genealogy_users.imis_id 
WHERE genealogy_relations.user_id = '00003' AND genealogy_relations.current_org = '1'; 

在這一點上,我甚至不知道我需要尋找?這是一個'子查詢/子選擇'發揮作用嗎?

我的MySQL-fu僅限於非常直接/純粹的查詢類型。這要比我以前更先進了。

+1

郵政表和數據爲文本我們不能複製/從圖片粘貼[閱讀此](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/ 285557#285557) –

+2

向我們展示db架構,示例數據和預期輸出。 \t請閱讀[**如何提問**](http://stackoverflow.com/help/how-to-ask) \t \t這裏是一個偉大的地方[** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)來了解如何提高您的問題質量並獲得更好的答案。 \t [**如何創建一個最小的,完整的,並且可驗證例如**](http://stackoverflow.com/help/mcve) \t嘗試創建http://rextester.com –

+0

一個什麼樣你的意思是「動態ID」?因爲你的結果返回3行爲3個不同的ID –

回答

1

你需要用自己的加盟對org_idgenealogy_relations表:

SELECT o.*, u.* 
FROM genealogy_relations r1 
JOIN genealogy_relations r2 ON r2.org_id = r1.org_id 
JOIN genealogy_orgs o  ON o.org_id = r2.org_id 
JOIN genealogy_users u  ON u.imis_id = r2.user_id 
WHERE r1.user_id = '00003' 
    AND r1.current_org = '1' 
+0

謝謝...查詢doesnt編譯/工作.. 我得到一個錯誤:」未知的列'o.user_id''on子句'中查詢:「 – whispers

+1

這就是爲什麼你應該發佈工作前足夠rextester所以我們可以測試它。 –

+0

@whispers它應該是'o.org_id'。現在修復 –

0

取下查詢genealogy_relations.user_id = '00003',它應該工作

SELECT 
genealogy_relations.org_id, 
genealogy_relations.user_id, genealogy_relations.relation_type, genealogy_relations.start_year, genealogy_relations.end_year, 
genealogy_users.imis_id, genealogy_users.full_name, 
genealogy_orgs.org_name 
FROM genealogy_relations 
INNER JOIN genealogy_orgs ON genealogy_relations.org_id = genealogy_orgs.org_id 
INNER JOIN genealogy_users ON genealogy_relations.user_id = genealogy_users.imis_id 
WHERE genealogy_relations.current_org = '1'; 
+0

如果我做..它拉ALL current_org =「1」的數據.. 使用從上面的(差)圖像的例子.. 用戶:00003 知道此ID,並在看什麼org_id之後是在與current_org ='1'相同的行..這給了我一個目標org_id:'84864 因此,我只需要獲得數據orgs匹配「84864」... 它就像我需要得到'目標org_id「first ..然後只是做一個正常的JOIN查詢我的其他數據 – whispers

相關問題