【发布时间】:2015-01-19 16:12:59
【问题描述】:
我有以下MySQL 查询,它可以获取我需要的所有信息。
SELECT biobank.*, organization_.name, biobankattributelists.*
FROM biobank INNER JOIN organization_ ON biobank.biobankDbId = organization_.organizationId
LEFT JOIN biobankattributelists ON biobank.biobankDbId=biobankattributelists.biobankDbId
WHERE ((organization_.name LIKE '%%' OR '' IS NULL)
OR (biobank.biobankId LIKE '%%' OR '' IS NULL)
OR (biobank.acronym LIKE '%%' OR '' IS NULL)
OR (biobankattributelists.attributeListName LIKE '%%' OR '' IS NULL)
OR (biobankattributelists.attributeListValue LIKE '%%' OR '' IS NULL))
AND (biobank.countryCode = '' OR '' = '')
结果是
这里要注意的重要列是biobankDbId, attributeListName, attributeListValue。每个生物库可以有不同的attributeListName,每个attributeListName 有不同的attributeListValue。 这三者的组合在结果集中是独一无二的。例如在rows 2 and 3; Biobank for Serum的可用文件是Protocols/Procedures和Sample Catalogue。
假设我得到这样的结果:
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 来格式化我希望显示的查询结果。
附:为小图道歉。如果在新标签中打开,它会更大。
【问题讨论】:
-
我完全不明白你想要什么:你的查询很奇怪:“LIKE '%%' OR '' IS NULL”'' 永远不会为空!语言是php还是java?答案会因语言而完全不同。也许你可以给对象 Biobank...
-
那么 * OR '' = '' * 应该做什么?建议把这个装箱,然后重新开始!
-
请假设查询是正确的。我正在使用 Liferay Java EE 门户框架,查询的显示略有不同。我使用 mysql 查询日志在 sql 工作台中运行查询。因为这是一个没有参数的空查询,它为我获取图片中的结果集。