2012-07-22 59 views
0

我不知道它叫什么,所以我只是试图解释。MSSQL数据解析

可以说有两个表,tableAtableB

  • tableA存在具有若干列(例如105条)
  • tableB存在具有一个文本列(例如,“这”)

105手段'这个'。

所以一个数字存储在A表中w/c在B表中有含义。

我想获得tableA号码,但是当它显示时它会显示'This'。

逻辑:如果从A的结果是105,则显示从乙等效文本其中id是105 显示器:THIS

SELECT TOP 1 
    CHAR_KEY AS charid, 
    USER_KEY AS userid, 
    CONVERT(VARCHAR,substring(char_data, 9, 16)) AS name, 
    CONVERT(INT,cast(reverse(substring(char_data, 7, 2)) as BINARY(2))) AS level, 
    CONVERT(INT,substring(char_data, 25, 1)) AS type, 
    CONVERT(INT,cast(reverse(substring(char_data, 263, 2)) as BINARY(2))) AS strength, 
    CONVERT(INT,cast(reverse(substring(char_data, 265, 2)) as BINARY(2))) AS wisdom, 
    CONVERT(INT,cast(reverse(substring(char_data, 267, 2)) as BINARY(2))) AS dexterity, 
    CONVERT(INT,cast(reverse(substring(char_data, 269, 2)) as BINARY(2))) AS charisma, 
    CONVERT(INT,cast(reverse(substring(char_data, 271, 2)) as BINARY(2))) AS intelligence, 
    CONVERT(INT,cast(reverse(substring(char_data, 273, 2)) as BINARY(2))) AS constitution, 
    CONVERT(INT,cast(reverse(substring(char_data, 309, 4)) as BINARY(4))) AS fame, 
    CONVERT(INT,cast(reverse(substring(char_data, 33, 4)) as BINARY(4))) AS guild, 
    CONVERT(INT, substring(char_data, 261, 1)) AS permission 
FROM CHAR_DATA0 WHERE CONVERT(INT, substring(char_data, 261, 1))=0x00 ORDER BY level DESC 

的查询来获取公会的名称。

SELECT 
    guild_name 
FROM guild_data WHERE guild_key=guild 

我想要得到的是guild。从第一SELECT查询

实施例的guild结果:518

在桌子上guild_data,列guild_name包含公会518 518的名称是guild_key。

请帮忙,谢谢。

回答

1
SELECT 
    guild_data.guild_name 
FROM CHAR_DATA0 
inner join guild_data on guild_key = CONVERT(INT,cast(reverse(substring(char_data, 33, 4)) as BINARY(4))) 
WHERE CONVERT(INT, substring(char_data, 261, 1))=0x00 ORDER BY level DESC 
+0

你好,我编辑了我的第一篇文章来显示我的查询。谢谢。 – nambla 2012-07-22 21:12:39

+0

@ user1543644根据我的理解修改为使用您的实际查询。 – Bert 2012-07-22 21:18:39

+0

你好,它仍然显示与我上一个查询相同的输出。行会依然在数量上。如果缺少某些东西,我现在试图找出它。非常感谢。 – nambla 2012-07-22 21:21:23

0

你需要一个 “选择” 和 “加盟”

select b.text 
    from tablea a 
    inner join tableb b on a.id = b.id 
    where a.id = 105 

为了使这项工作,但是,你需要 “ID” BOTH表所示。

+0

我编辑了我的第一篇文章。我的查询有点不同,因为数字数据来自一个子字符串。 – nambla 2012-07-22 21:13:12