在这种情况下避免使用 SQL 游标
我继承了一个似乎需要我使用游标或 while 循环的系统。 鉴于下表,我想获取与会者的姓名,例如
比尔
鲍勃
简
吉尔与会者
SourceTable|SourceTableId
男生 |1
男生 |2
女生 |2
女生 |1男孩
ID|名字
1 |比尔
2 |鲍勃女孩
ID|名字
1 |Jill
2 |Jane
请注意,系统实际上并不使用“参加者、男孩和”。女孩而是使用合同、订单和其他此类实体等,但以这种形式表示更容易\更简单。 可能会加载更多的查找表,而不仅仅是“男孩”和“女孩”,所以
无论如何我可以通过不使用游标或其他基于行的操作来实现这一点。
I have inherited a system which seemingly requires me to use a cursor or while loop.
Given the below tables, I would like to get the names of the attendees e.g
Bill
Bob
Jane
JillAttendees
SourceTable|SourceTableId
Boys |1
Boys |2
Girls |2
Girls |1Boys
Id|FirstName
1 |Bill
2 |BobGirls
Id|FirstName
1 |Jill
2 |Jane
Note, the system doesn't actually use Attendees,Boys & Girls but rather uses Contracts, Orders and other such entities etc but it was easier\simpler to represent in this form.
There may be loads more lookup tables than just "boy" and "girl" so
Is there anyway I can achieve this by not using cursors or other row based operations.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果我理解这个查询应该有效:
If I understand this query should work:
联合可能是执行此操作的唯一方法,可能封装在视图中。如果您可以获得表的列表,那么您可以编写一个生成视图的代码生成器。如果供应商不允许您将视图放入应用程序数据库中,则如有必要,请将视图放入同一服务器上的不同数据库或架构中。
您能否以编程方式识别所需的表和列或从某处获取列表?
A union is probably the only way you're going to do this, probably encapsulated in a view. If you can get a list of the tables then you could write a code generator that generates the view. If necessary put the view in a different database or schema on the same server if the vendor won't allow you to put it in the application DB.
Can you programatically identify the tables and columns you need or get a list from somewhere?