0

重複の可能性:
値がコンマで区切られた mysql

次のように、より多くの行を含む 2 つのテーブルがあります。

1. numberstable
    ---------------------------
    | number_id | number_name |
    ---------------------------
    |    1      |     one     |
    |    2      |     two     |
    |    3      |     three   |
    |    4      |     four    |
                .
                .
                .
    ---------------------------

2. testtable
    -------------------------------
    | test_id | numbers | sthelse |
    -------------------------------
    |    1    | 2.4.5.6 | text1   |
    |    2    | 4.8.7.1 | text2   |
    |    3    | 2.7.8.5 | text3   |
    -------------------------------

最初に、テーブル「testtable」の 3 つの「numbers」行すべてを結合して、次のようなものを取得したいと思います: 1.2.4.5.6.7.8 そして、次のクエリでそれを除外します。このクエリは「SELECT number_id, number_name FROM numberstable ORDER BY number_name」です。除外した後、「テストテーブル」で使用されていない数字 (9、10、11、...) だけを表示したいと思います。

どうやってするか?

4

1 に答える 1

1

numberstable を testable に関連付けようとしている場合。2つを次のようなスキーマがある場所に関連付ける別のテーブルを追加する方がはるかに役立つと思います

1. numberstable
    ---------------------------
    | number_id | number_name |
    ---------------------------
    |    1      |     one     |
    |    2      |     two     |
    |    3      |     three   |
    |    4      |     four    |
                .
                .
                .
    ---------------------------

2. testtable
    ---------------------
    | test_id | sthelse |
    ---------------------
    |    1    | text1   |
    |    2    | text2   |
    |    3    | text3   |
    --------------------

3. numbersintesttable
    -----------------------
    | test_id | number_id |
    -----------------------
    |    1    | 2         |
    |    1    | 4         |
    |    1    | 5         |
    |    1    | 6         |
    |    2    | 4         |
    |    2    | 8         |
    |    2    | 7         |
    |    2    | 1         |
    -----------------------

したがって、新しいテーブルは、必要なタイプの結合 (INNER、OUTER など) を利用して、1 つのクエリで必要なすべてのデータを取得するために使用できる多対多の結合テーブルになります。

于 2012-08-15T15:55:05.967 に答える