2012-07-22 92 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