将3个SQL SELECT合并为1

问题描述

| *更新* 抱歉!我有点忙,很忙,所以没有适当地解决这个问题。 本质上,这三个队列都与用户详细信息有关。我正在为新客户端更新站点,但该站点受当前数据库结构的限制。因此,我的目标是尝试将所有这些信息放在一个数据库调用中,而不是在3个单独的数据库中,因为这似乎是两者中最有效的方式。 我希望有人比我更聪明,知道一些忍者的动作可以一口气找回。在发布之前,我本该花更多时间自己尝试一下。 谢谢你的时间。 常见值为@dealerId-这是一个int值。 谢谢
    SELECT TOP(100) PERCENT dbo.ReferenceItems.Title 
    FROM dbo.AdvertiserLanguageLink 
    INNER JOIN dbo.ReferenceItems 
    ON dbo.AdvertiserLanguageLink.LanguageId = dbo.ReferenceItems.Id
    WHERE (dbo.AdvertiserLanguageLink.AdvertiserId = @dealerId) 
    ORDER BY dbo.ReferenceItems.Title



    SELECT TOP (100) PERCENT dbo.AircraftTypes.AircraftTypeDescription,dbo.AircraftTypes.AircraftTypeId 
    FROM dbo.AdvertiserAircraftTypeLink 
    INNER JOIN dbo.AircraftTypes 
    ON dbo.AdvertiserAircraftTypeLink.AircraftTypeId = dbo.AircraftTypes.AircraftTypeId 
    WHERE (dbo.AdvertiserAircraftTypeLink.AdvertiserId = @dealerId) 
    ORDER BY dbo.AircraftTypes.SortSequence



    SELECT TOP (1) dbo.Addresses.Country,dbo.Addresses.Telephone1 
    FROM dbo.AdvertiserAddressLink 
    INNER JOIN dbo.Addresses 
    ON dbo.AdvertiserAddressLink.AddressId = dbo.Addresses.Id 
    WHERE (dbo.AdvertiserAddressLink.AdvertiserId = @dealerId) 
    AND (dbo.Addresses.AddressType = 1 OR dbo.Addresses.AddressType = 0) 
    ORDER BY dbo.Addresses.Sequence
    

解决方法

您不能/不应该将它们组合在一起。 您正在从所有3个表中选择完全不同的数据,看来它们是完全无关的。您希望“组合”结果集看起来如何?您要结合书籍,飞机和电话信息吗? 您的目标到底是什么?如果您告诉我们,我们也许可以给您一条不同的(正确的)路径。     ,我只是在这里推论,但你要么... 1.只想使代码更简洁。 2.希望输出具有一致的签名(相同的字段等)。 如果是
1.
,我将保持原样。每个查询都是不同的,并且使用IF语句将它们分隔开使它可读且显而易见,存在三个执行路径。 在自动执行部分程序员工作的数据绑定框架的情况下,通常需要后者。如果是这种情况,我仍然将代码保留在IF语句中。如果您随后将每个字段明确地转换为相同的类型(例如INT或VARCHAR(256)等),然后确保每次都使用相同的字段名称(例如ID或Name等),那么您将每个执行路径都将获得相同的签名。 编辑: 对于您要实现的目标,更具体地说,您所面临的问题,我仍然不确定。 如果您只是想执行一个数据库调用,并获取三组数据,那么使用带有3个2语句的存储过程就可以做到这一点。然后,根据您访问数据库的方式,您应该能够完成这三个记录集的设置。 因此,我怀疑您面临的问题根本与SQL不相关,而与您的应用程序有关。您使用什么语言?您当前如何访问记录集? SP返回3个记录集时您将面临什么问题?等等...     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...