【发布时间】:2012-03-15 18:44:18
【问题描述】:
目前我有一个 Web 应用程序(JSF 2.0 和 SQL Server),其中 tDataTable 的值是使用查询 A 检索的,然后根据检索到的结果,我们运行另一个查询来检索相关的详细信息。
例如: 查询 A:返回用户选择区域中的所有餐厅(假设有 1000 家) 查询 B:根据返回的结果(上图),查询 B 使用 RestaurantPK 值重试每家餐厅的评论。
所以现在的做法是,如果查询 A 执行后有 200 行,我们调用查询 B 200 次来检索每家餐厅的评论信息。
所以我的问题是如何提高效率?在这些情况下,标准做法是什么?我选择标题为“嵌入子查询结果的最佳方法”,因为我怀疑子查询将需要在 Query A 中使用,但无法弄清楚它是如何工作的,给定每个餐厅(行)可能有10-15 条评论)。
更新:
在将问题发布到此处之前,我曾尝试加入,但问题是我只获得了每家餐厅的一条评论,而不是每家餐厅的所有可用评论。我开始认为这样做的唯一方法是编写一个存储过程,一旦执行 A,我会将结果存储在 #temp 表中,循环遍历结果并检索每个餐厅的所有评论并插入它们回到 #temp 表,如果一个餐厅有 10 条评论,它们将用 ; 分隔。回到java中,我会将它们拆分回有意义的格式。这样,我仍然只为每家餐厅返回一行,但将嵌入的评论作为列之一。
所以我会:
Returnat,位置,电话......评论 X,悉尼,1234,.....,AAAAAAA;BBBBBBBB;CCCCCCCCC;
评论?
【问题讨论】:
标签: sql