2

別のテーブルの範囲をマージするために使用したい「開始」列と「終了」列があります。範囲の「説明」を連結したいと思います。これは可能ですか?

以下は私のスキーマがどのように見えるかです:

CREATE TABLE verses 
(
  `id` int auto_increment primary key,
  `chapter` int(11) NOT NULL,
  `verse` int(11) NOT NULL,
  `description` text
);

CREATE TABLE verses_range 
(
  `id` int auto_increment primary key,
  `chapter` int(11) NOT NULL,
  `start` int(11) NOT NULL,
  `end` int(11)
);

これまでのところ、これは私が持っているものですが、範囲の説明列をマージする方法がわかりません。最初のレコードの説明のみを提供します。

SELECT verses_range.*, verses.description
FROM verses_range
INNER JOIN verses
  ON verses_range.start = verses.verse
    AND verses_range.chapter = verses.chapter

私はこれを SQL Fiddle ( http://sqlfiddle.com/#!2/0578e/1 ) に持っていて、これを返します:

ID  CHAPTER START   END DESCRIPTION
1   2   156 162 Donec tincidunt fringilla libero et vestibulum.
2   3   53  (null)  Lorem ipsum dolor sit amet, consectetur adipiscing elit.

ただし、最初のレコードの説明値を次のように取得しようとしています。

Donec tincidunt fringilla libero et vestibulum. (156) Donec auctor a velit eu tempor. (157) Etiam sed lobortis sapien. (158) Integer ut dui ultricies arcu congue pulvinar. (159) proin feugiat dignissim rutrum. (160) Mauris eu ultrices ligula。(161) Ut varius id enim tempor porta. (162)

4

2 に答える 2

3

あなたはこのように試すことができます...

SELECT verses_range.*, Group_Concat(verses.description)
FROM verses_range
INNER JOIN verses on
    verses_range.chapter = verses.chapter
where start<=verse and verse<=if(isnull(end),start,end)
group by  id,chapter,start,end

SQL フィドルのデモ

于 2013-07-28T06:49:25.240 に答える
0

だから、私たちはこのようなものを得ます...

SELECT *
  FROM verses_range r
  JOIN verses v
    ON v.verse BETWEEN r.start AND r.END;

| ID | CHAPTER | START | END | VERSE |                                     DESCRIPTION |
----------------------------------------------------------------------------------------
|  1 |       2 |   156 | 162 |   156 | Donec tincidunt fringilla libero et vestibulum. |
|  1 |       2 |   156 | 162 |   157 |                 Donec auctor a velit eu tempor. |
|  1 |       2 |   156 | 162 |   158 |                      Etiam sed lobortis sapien. |
|  1 |       2 |   156 | 162 |   159 |  Integer ut dui ultricies arcu congue pulvinar. |
|  1 |       2 |   156 | 162 |   160 |                 Proin feugiat dignissim rutrum. |
|  1 |       2 |   156 | 162 |   161 |                      Mauris eu ultrices ligula. |
|  1 |       2 |   156 | 162 |   162 |                 Ut varius id enim tempor porta. |

http://sqlfiddle.com/#!2/0578e/1

それで?

于 2013-07-28T08:47:33.800 に答える