2017-08-08 103 views
0

有三個表,第一個表名是基線其中包含的PPI_SCORE_TOOKUP包含六個名稱的所有受益人的資料和PPI的名字一個欄分數和第二個表列如下第三個表名爲endline其中包含受益人終點線評估數據和一列名爲PPI_Score,我想要的是,加入一些如何這些表,但是沒有外鍵baseline and endline表中PPI_SCORE_TOOKUP表只有PPI_Score表中PPI_SCORE_TOOKUP底線底線表,我想查詢顯示沿PPI結果一些基線數據,如果PPI在值所述basline表之間或等於PPI_SCORE_STARTPPI_SCORE_END並且還應該顯示相同的構件的底線數據與它的6列中的PPI分數沿着如果PPI得分在底線表之間和equals到PPI_SCORE_STARTPPI_SCORE_END全部在一行中。SQL查詢和等於

注:我沒有嘗試任何查詢,因爲我沒有任何想法如何做到這一點,但我期望在這個問題的底部的預期結果。

表如下所示

baseline table 


ID NAME LAST_NAME DISTRICT PPI_SCORE 
1 A   A   A    10 
2 B   B   B    23 
3 C   C   C    90 
4 D   D   D    47 



endline table 

baseline_ID  Enterprise Market PPI_SCORE 
3     Bee Keeping  Yes 
2     Poultry   No 74 
1     Agriculture  Yes 80 





PPI_SCORE_TOOKUP table 

ppi_start ppi_end national national_150 national_200 usaid 
0    4  100   100    100   100 
10    14  66.1  89.5    96.5  39.2 
5    9  68.8  90.2    96.7  44.4 
15    19  59.5  89.1    97.2  35.2 
20    24  51.3  85.5    96.4  28.8 
25    29  43.5  81.1    93.2  20 
30    34  31.9  74.5    90.4  13.6 
35    39  24.6  66.9    87.3  7.9 
40    44  15.2  58     82.8  4.5 
45    49  11.4  47.9    73.4  4.2 
50    54  6   37.2    68.4  2.6 
55    59  2.7  26.1    61.3  0.5 
60    64  0.9  21     50.4  0.5 
65    69  0   14.3    37.1  0 
70    74  3   14.3    29.2  0 
75    79  0   1.4    5.1   0 
80    84  0   0     9.5   0 
85    89  0   0     15.2  0 
90    94  0   0     0   0 
95    100  0   0     0   0 

預期結果

enter image description here

回答

0

您的查詢可以通過以下方式進行:

SELECT * 
FROM baseline b 
LEFT JOIN endline e ON b.id = e.baseline_ID 
LEFT JOIN PPI_SCORE_TOOKUP ppi ON b.PPI_SCORE BETWEEN ppi.ppi_start AND ppi.ppi_end 
LEFT JOIN PPI_SCORE_TOOKUP ppi2 ON e.PPI_SCORE BETWEEN ppi2.ppi_start AND ppi2.ppi_end 

這符合您idbaseline表,baseline_IDendline表,保留baseline的空值。然後它匹配來自baselinePPI_SCORE與來自PPI_SCORE_TOOKUPppi_start and ppi_end。然後我們加入PPI_SCOREendlineand ppi_end

通過用你想要的任何字段替換*。 See fiddle爲一個工作示例

+0

謝謝@ewolden在查找表中,ppi得分和端點一起,你會寫plz寫完整的查詢 –

+0

你看看我的例子中的sqlfiddle嗎?因爲我們加入了'endline'和'baseline',所以我們只需要將它們加入'PPI_SCORE_TOOKUP'。然後,所有3個表應該加入。如果您看到的記錄中缺少結果,您預期會在那裏,請告訴我。 – ewolden

+0

讓我再次檢查它 –