1

我需要将两个表连接在一起,其中第二个表具有字符串中的第一个表。

例如

Table1 has ID1, ID2, Lang_id, User, Text.

Table2 has ID_a, User, List_ID2.

此外,它List_ID2是逗号分隔的,所以我必须确保在所有情况下都能得到它,所以如果它是唯一的数字,或者是字符串的开头、中间或结尾。但不要截断值,即(10 不是 100 - '10'0)

额外的踢球者是那Lang_id是语言,Place我也必须把它分开。

我的语言很好,我无法ID_a进入我的结果

IE

TABLE 1
ID1 ID2 Lang_id User    Text
1   2   1   bob Me
1   2   2   bob Mich
1   2   3   bob Mi
2   1   1   bob You
2   1   2   bob Du
2   1   3   bob usted
3   1   1   tim You
3   1   2   tim Dich
3   1   3   tim le
4   3   1   tim Hello
4   3   2   tim Hallo
4   3   3   tim ihola

TABLE 2
ID_a    User    List_ID2
100 bob 1, 2
200 tim 1, 3

RESULTS
ID_a    ID1 ID2 English German  Spanish
100 1   1   You Du  usted
100 2   2   Me  Mich    Mi
200 3   1   You Dich    le
200 4   3   Hello   Hallo   ihola

我的陈述看起来有点像这样:

SELECT DISTINCT main.ID1, main.ID2, ID_a
  (SELECT Text
   FROM table1 AS a
   WHERE lang_id = 1
     AND main.ID1 = a.ID1
     AND main.ID2 = a.ID2) AS English,
  (SELECT Text
   FROM table1 AS b
   WHERE lang_id = 2
     AND main.ID1 = b.ID1
     AND main.ID2 = b.ID2) AS German,
  (SELECT Text
   FROM table1 AS c
   WHERE lang_id = 3
     AND main.ID1 = c.ID1
     AND main.ID2 = c.ID2) AS Spanish,
FROM table1 AS main
LEFT OUTER JOIN table2 ON table2.User = main.User
AND (table2.List_ID2 LIKE STR(ID2)
OR table2.List_ID2 LIKE (ID2 + ',%')
OR table2.List_ID2 LIKE ('%,' + ID2 + ',%')
OR table2.List_ID2 LIKE ('%,' + ID2)

第一部分工作正常(语言是分开的),但我无法从 table2 获取 ID,我尝试了几种不同的方法,上面返回没有错误,但有很多 NULL 值。

4

1 回答 1

0

在这里找到答案: SQL STR() 函数相等

我需要指定 STR() 的长度

于 2013-03-11T15:22:19.373 回答