表名MSvo3ProVersion版本ID      项目名称ID     姓名名称               项目版本号          升级验证   是否生效
MSvo3Id    Msvo3Msvo3id     Msvo3ProjectName      Msvo3Version       Msvokey     Msvo3IsUsed
int            int         navarchar(100)       navarchar(100)    navarchar(100)     bit 1              1             DAS客服端              1.1               1.1_1.0         1 
 2              2             DAS服务器              1.1               1.1_1.0         0
需要得到此表中:Msvo3IsUsed=1的且项目版本号是最大的版本ID
结果:版本id=1(后面当条件查询) 版本号1.1(需要的数据)表名  MSVO4FileVersion
ID           程序版本ID       文件ID            文件版本        操作方式
MSVO4Id      MSVO4MSVO3Id      MSVO4MSVO2Id     MSVO4Version    MSVO4Type
int              int             int             navarchar        int 
1                 1               1                1.0             1
3                 1               2                1.0             1需要得到此表中:程序版本ID=1(也就是上表中的最大版本ID)的文件ID
结果:文件ID=1和文件ID=2(也就是两个值)表名  MSVO2FileInfo
ID        主表ID        文件名称          文件类型       文件路径           说明
MSVO2Id  MSVO2MSVO1Id   MSVO2Name        MSVO2FileType   MSVO2Folder      MSVO2Re
int        int          navarchar(100)   navarchar(100)  navarchar(300)   navarchar(500)1           1              Update          文件夹        F:\新建文件夹      文件信息
2           2              update          文件夹        F:\新建文件夹      文件信息需要得到此表中:ID=1和ID=2的两条数据信息最后输出的是:
版本号:1.1
MSVO2FileInfo表中两条文件信息

解决方案 »

  1.   


    DECLARE @Id int
    SELECT @id = MAX(MSvo3Id) FROM MSvo3ProVersion WHERE Msvo3IsUsed = 1SELECT * FROM MSVO2FileInfo m2 JOIN MSVO4FileVersion m4 ON m2.MSVO2Id = m4.MSVO4MSVO3Id JOIN 
    MSvo3ProVersion m3 ON m4.MSVO4MSVO3Id = @id
      

  2.   

    sorry,那时错的。刚刚没试。去试了才发现时错的。。
      

  3.   


    CREATE TABLE MSvo3ProVersion
    (
    MSvo3Id int,
    Msvo3Msvo3id int,
    Msvo3ProjectName nvarchar(100),
    Msvo3Version nvarchar(100),
    Msvokey nvarchar(100),
    Msvo3IsUsed bit
    )
    INSERT MSvo3ProVersion
    SELECT 3,1,N'DAS客服端',N'1.1',N'1.1_1.0',1
    SELECT 2,2,N'DAS客服端',N'1.1',N'1.1_1.0',0
    SELECT 1,1,N'DAS客服端',N'1.1',N'1.1_1.0',1SELECT * FROM MSvo3ProVersion
    --
    MSvo3Id     Msvo3Msvo3id Msvo3ProjectName  Msvo3Version   Msvokey   Msvo3IsUsed 
    -------------------------------------------------------------------------------
    3           1            DAS客服端           1.1         1.1_1.0       1
    2           2            DAS客服端           1.1         1.1_1.0       0
    1           1            DAS客服端           1.1         1.1_1.0       1(所影响的行数为 3 行)CREATE TABLE MSVO4FileVersion
    (
    MSVO4Id int,
    MSVO4MSVO3Id int,
    MSVO4MSVO2Id int,
    MSVO4Version nvarchar(100),
    MSVO4Type int
    )
    INSERT INTO MSVO4FileVersion
    SELECT 3,3,3,N'1.0',1
    SELECT 3,1,2,N'1.0',1
    SELECT 1,1,1,N'1.0',1SELECT * FROM MSVO4FileVersion
    --
    MSVO4Id     MSVO4MSVO3Id MSVO4MSVO2Id MSVO4Version   MSVO4Type 
    ----------- ------------ ------------ ------------ ----------- 
    3           3            3            1.0                1
    3           1            2            1.0                1
    1           1            1            1.0                1(所影响的行数为 3 行)CREATE TABLE MSVO2FileInfo
    (
    MSVO2Id int,
    MSVO2MSVO1Id int,
    MSVO2Name nvarchar(100),
    MSVO2FileType nvarchar(100),
    MSVO2Folder nvarchar(300),
    MSVO2Re nvarchar(500)
    )SELECT * FROM MSVO2FileInfo
    --
    MSVO2Id     MSVO2MSVO1Id MSVO2Name   MSVO2FileType    MSVO2Folder   MSVO2Re   
    ----------- ------------ ------------------------------------------------------- 
    3           2            Update        文件夹         F:\新建文件夹    文件信息
    2           2            Update        文件夹         F:\新建文件夹    文件信息
    1           1            Update        文件夹         F:\新建文件夹    文件信息(所影响的行数为 3 行)INSERT INTO MSVO2FileInfo
    SELECT 3,2,N'Update',N'文件夹',N'F:\新建文件夹',N'文件信息'
    SELECT 2,2,N'Update',N'文件夹',N'F:\新建文件夹',N'文件信息'
    SELECT 1,1,N'Update',N'文件夹',N'F:\新建文件夹',N'文件信息'DECLARE @Id int
    SELECT @id = MAX(MSvo3Id) FROM MSvo3ProVersion WHERE Msvo3IsUsed = 1
    SELECT m3.Msvo3Version,m2.MSVO2Id,m2.MSVO2MSVO1Id,m2.MSVO2Name,m2.MSVO2FileType,m2.MSVO2Folder,
    m2.MSVO2Re FROM MSVO2FileInfo m2 JOIN MSVO4FileVersion m4 ON m2.MSVO2Id = m4.MSVO4MSVO2Id JOIN 
    MSvo3ProVersion m3 ON m4.MSVO4MSVO3Id = m3.MSvo3Id AND m4.MSVO4MSVO3Id = @id--
    Msvo3Version   MSVO2Id     MSVO2MSVO1Id MSVO2Name       MSVO2FileType        MSVO2Folder      MSVO2Re
    ------------------------ ------------ ----------------------------------------------------------- -------
    1.1             3           2            Update           文件夹             F:\新建文件夹      文件信息(所影响的行数为 1 行)
      

  4.   


    create table MSvo3ProVersion(
    MSvo3Id int, Msvo3Msvo3id int,Msvo3ProjectName varchar(100)
    , Msvo3Version varchar(100), Msvokey varchar(100),Msvo3IsUsed bit)
    insert into MSvo3ProVersion
    select 1,2,'DAS客服端' ,'1.1', '1.1_1.0', 1 
    union all
    select 2, 2, 'DAS服务器', '1.1', '1.1_1.0', 0create table  MSVO4FileVersion(
    MSVO4Id int, MSVO4MSVO3Id int, MSVO4MSVO2Id int, MSVO4Version varchar(100), MSVO4Type int)
    insert into MSVO4FileVersion
    select 1, 1, 1, '1.0', 1
    union all
    select 3, 1, 2 ,'1.0', 1create table   MSVO2FileInfo(
    MSVO2Id int,MSVO2MSVO1Id int, MSVO2Name varchar(100), MSVO2FileType varchar(100), MSVO2Folder varchar(300), MSVO2Re varchar(500))
    insert into MSVO2FileInfo
    select 1, 1, 'Update','文件夹','F:\新建文件夹', '文件信息'
    union all
    select 2, 2, 'update', '文件夹', 'F:\新建文件夹', '文件信息'create proc P_GetVersionInfo 
    as
    declare @MSvo3Id int
    declare @Msvo3Version varchar(100)
    select @MSvo3Id=MAX(MSvo3Id),@Msvo3Version=MAX(Msvo3Version) from MSvo3ProVersion
    where Msvo3Version=(
    select  MAX(Msvo3Version) from MSvo3ProVersion 
    where Msvo3IsUsed=1 )
    and Msvo3IsUsed=1
    select @Msvo3Version as 版本号,MSVO2Re from MSVO2FileInfo
    where MSVO2Id in (select MSVO4MSVO2Id from MSVO4FileVersion where MSVO4MSVO3Id=@MSvo3Id)------------------
    exec P_GetVersionInfo 
    版本号    MSVO2Re
                                                                        
    ------- --------------
    1.1      文件信息
    1.1      文件信息(2 行受影响)
      

  5.   

    会吗?我在最后一张表加上
    3 1 UPDATE 12 F:\新建文件夹 文件信息查出2条啊
      

  6.   

    Select MSVO2FileInfo.* from Msvo3ProVersion 
    Left Join  Msvo4FileVersion
    On Msvo4FileVersion.MSVO4MSVO3Id=Msvo3ProVersion.MSvo3Id 
    Left Join #TmpMSVO2FileInfo
    On Msvo4FileVersion.MSVO4MSVO2Id=MSVO2FileInfo.MSVO2Id
    Where Msvo3ProVersion.Msvo3Version=(select Max(Msvo3Version) Msvo3Version from Msvo3ProVersion Where Msvo3IsUsed=1 )我试了下这个语句也能得到要的东西