2014-11-21 141 views
0

我有以下MySQL查詢獲取我需要的所有信息。格式化查詢顯示結果

結果是enter image description here

重要的列這裏需要注意的是biobankDbId, attributeListName, attributeListValue。每個生物樣本庫可以有不同的attributeListName,並且每個attributeListName有不同的attributeListValue這三者的組合在結果集中是唯一的。例如在rows 2 and 3; 可用文件對於血清生物庫協議/程序樣品目錄

只要我得到的結果是這樣的:

Biobank results = BiobankLocalServiceUtil.searchBiobanks(); 
for(Biobank row:results){ 
// To be done.... 

} 

我要顯示的結果像這樣由attributeListName分組每個生物樣本庫。

Name: Biobank For Serum 

Automation Services: 
Analysis 

Available Documents: 
Protocols/Procedures, Sample Catalogue 

Complementary Services: 
Biochemistry Laboratory, Pathology Department/Imaging 

..... 

我也許可以得到這個通過獲取的結果,因爲它是和再製造另一個查詢完成。但是做多個查詢將會是低效的。更進一步,因爲我有這個查詢所需的所有東西,我正在通過修改查詢或者在前端尋找解決方案,例如PHP/JSP來根據需要顯示查詢結果的格式。

P.S.小圖片的道歉。如果在新選項卡中打開,它會更大。

+0

我完全不明白你想要什麼:你的查詢很奇怪:「LIKE'%%'或''是NULL'''永遠不會爲空!該語言是PHP還是Java?根據語言的不同,答案會完全不同。也許你可以給對象Biobank ... – rlm 2014-11-21 13:44:11

+0

什麼是* OR''=''*應該這樣做?建議bin並重新開始! – Strawberry 2014-11-21 13:45:51

+0

請假定查詢是正確的。我正在使用Liferay Java EE門戶框架,查詢顯示略有不同。我使用mysql查詢日誌在sql workbench中運行查詢。因爲這是沒有參數的空查詢,它將圖像中的結果集提取給我。 – SASM 2014-11-21 13:49:45

回答

1

您的查詢,由您使用的Liferay事件生成,令人分心,令人分心。但它似乎是正確的。希望所有那些奇怪的OR '' IS NULL子句不會破壞性能。

您似乎正在處理biobankattributelists表中的名稱/值架構。

這裏的問題是格式化您的結果集以供顯示。正如你所指出的,你需要的所有信息都在結果集中。你需要做什麼,用你的主機語言(Java?php?我們不能從你的問題中知道)讀取結果集並構建你的輸出結果。

如果您可以修改查詢,我建議您在此末尾添加此ORDER BY子句。

ORDER BY organization_.name, 
     biobankattributelists.attributeListName, 
     biobankattributelists.attributeListValue 

您希望這樣,結果集的行將以您需要它們構建輸出的順序出現。

然後你想在你的主機程序中實現什麼報告寫人叫控制中斷邏輯。也就是說,每當列的值從之前的值改變時,你就想做一些特殊的事情。例如,每當組織名稱更改時,您想顯示新的組織名稱。

尊重,這是超出了教你做到這一點的答案的範圍。