我目前正在开发一个前端工具,它要求我编写一个查询,将多行数据返回到单个行中。需要注意的是,这个sql查询是根据用户选择动态生成的。我并不擅长解释到底需要做什么,所以让我来告诉你。
表1:
PersonnelID | Product | Intermediate | Advanced
1234 Product1 Module1 Module2
1234 Product2 Module3
1234 Product3 Module4
123456 Product1 Module1 Module2
123456 Product2 Module2
用户可以指定任意数量的产品或模块,查询需要返回带有特定产品和模块的产品或模块。我最初的方法是通过sql来实现这一点,但是现在我更愿意在返回数据时执行一些客户端操作,如果这对我的服务器来说太困难/太多负载的话。
在上述目标多次失败后,我一直在尝试编写一个查询来返回每个特定人员的所有产品条目。例如,1234将返回一行,其中包含产品1、2和3,此外,在“中间”下返回模块1和模块4,在“高级”下返回模块2和3,如下所示:
PersonnelID | Product | Intermediate | Advanced
1234 Product1, Product2, Product3 Module 1, Module 4 Module 2, Module 3
123456 Product1, Product2 Module 1 Module 2, Module 3
我对sql的经验是相当基本的,所以我很抱歉如果这个问题以前被问过或者是一个相当普通的方法,我还不太擅长用sql来表达我的问题或者搜索。
我已经尝试过使用group\u concat(),但是无法按预期工作。它将返回每个产品的每个示例,因为它出现在整个表中,并最终需要大约55秒来执行,这是完全不能接受的。
总的来说,我需要显示谁拥有用户选择的特定产品和/或模块。如果我的方法似乎是倒退/错误的,请让我知道,我不只是想要一个我想学习的答案:)
1条答案
按热度按时间7jmck4yq1#
你要问的问题的答案似乎是:
你应该问另一个关于性能的问题,如果这是一个问题的话。请确保包含有关表大小、索引和正在使用的查询的更多信息。