繁体   English   中英

SQL在其他表的字符串中联接

[英]SQL JOIN WHERE IN STRING OF OTHER TABLE

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

例如

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放入结果中

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值。

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

我需要指定STR()的长度

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM