1

2つのテーブルを結合する必要があります。ここで、seccondテーブルには文字列の最初のテーブルの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私の結果に入ることができません

すなわち

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 に答える