テーブルがそれ自体を参照するときにテーブルをそれ自体に結合する方法

ユージンポー

それ自体を参照する2つの列を持つテーブルがあります。

select * from cgroups;                                                                                                                                          
+----+--------------+-------------+-----------+----------+----------+
| id | title        | description | cunixperm | cgroup_1 | cgroup_2 |
+----+--------------+-------------+-----------+----------+----------+
| 1  | admin        | <null>      | 32        | 1        | <null>   |
| 2  | tag_mng      | <null>      | 32        | 1        | <null>   |
| 3  | tags         | <null>      | 32        | 1        | <null>   |
| 4  | exam_mng     | <null>      | 32        | 1        | <null>   |
| 5  | exam_writer  | <null>      | 32        | 1        | <null>   |
| 6  | exam_viewer  | <null>      | 32        | 1        | <null>   |
| 7  | exam_starter | <null>      | 32        | 1        | <null>   |
+----+--------------+-------------+-----------+----------+----------+

ここにそのコードがあります:-

create table cgroups
(
    id int unsigned primary key auto_increment,
    title varchar(100) not null unique,
    description varchar(255),

    cunixperm  tinyint unsigned not null default 32 ,# r=2 w=1
    cgroup_1   int unsigned not null default 1 references cgroups (id) on delete cascade on update cascade,
    cgroup_2   int unsigned references cgroups (id) on delete cascade on update cascade

);

cgroup_1列がc_groupの実際のタイトルに置き換えられたビューを作成したい

このようなもの:-http//sqlfiddle.com/#!9 / 7af382 / 1

select c.id, c.title, c.description, c.cunixperm, c1.title cgroup_1 from cgroups c , cgroups c1 
                             where c.cgroup_1 = c1.id;                                                                                                                                       
+----+--------------+-------------+-----------+----------+
| id | title        | description | cunixperm | cgroup_1 |
+----+--------------+-------------+-----------+----------+
| 1  | admin        | <null>      | 32        | admin    |
| 2  | tag_mng      | <null>      | 32        | admin    |
| 3  | tags         | <null>      | 32        | admin    |
| 4  | exam_mng     | <null>      | 32        | admin    |
| 5  | exam_writer  | <null>      | 32        | admin    |
| 6  | exam_viewer  | <null>      | 32        | admin    |
| 7  | exam_starter | <null>      | 32        | admin    |
+----+--------------+-------------+-----------+----------+

このアプローチの問題は、2つ(他のいくつかのテーブルでは8つ)あるのに、1つの参照列でしか機能しないことです。

私がフォローしている場合、

select c.id, c.title, c.description, c.cunixperm, c1.title, c2.title 
from cgroups c , cgroups c1, cgroups c2
where c.cgroup_1 = c1.id and c.cgroup_2 = c2.id;

行がゼロになります。http://sqlfiddle.com/#!9/7af382/4

scaisEdge

あなたのフィドルを使うことはうまくいくようです。とにかく、明示的な結合構文を使用する必要があります。

select c.id, c.title, c.description, c.cunixperm, c1.title, c.cgroup_1 
from cgroups c 
INNER JOIN cgroups c1  ON c.cgroup_1 = c1.id;

http://sqlfiddle.com/#!9/7af382/3

そして2人で参加する

select c.id, c.title, c.description, c.cunixperm, c1.title, c.cgroup_1 , c2.title cgroup_2
from cgroups c 
INNER JOIN cgroups c1  ON c.cgroup_1 = c1.id
INNER JOIN cgroups c2  ON c.cgroup_2 = c2.id   

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

テーブルをそれ自体に右結合するSQL

分類Dev

MySQL テーブルをそれ自体に結合する

分類Dev

テーブルをそれ自体と結合し、画面に表示する

分類Dev

SQL:テーブルをそれ自体に結合します

分類Dev

MySQLテーブルをそれ自体で結合する

分類Dev

テーブルをそれ自体と結合することは可能ですか?

分類Dev

テーブルをそれ自体に結合して最大行を取得し、別のテーブルをそれに接続する方法

分類Dev

行がなくなるまで、テーブルを親IDでそれ自体に結合します

分類Dev

行がnullの場合に、2番目の「ON」基準を使用してテーブルをそれ自体と結合する方法

分類Dev

テーブルを別のテーブルに結合してから、それ自体に結合します

分類Dev

中間テーブルをそれ自体と結合し、それに新しい空の列を追加するにはどうすればよいですか?

分類Dev

Laravelの雄弁なテーブルがそれ自体に結合され、すべての値を持つ1つの配列を取得する方法

分類Dev

単一のテーブルをそれ自体で結合することは可能ですか?

分類Dev

SQL Server2005でそれ自体を使用してテーブルを参照する

分類Dev

テーブルをそれ自体で100回結合することは避けてください

分類Dev

INNERJOINを使用せずにテーブルをそれ自体に結合するSQLSYNTANを理解するにはどうすればよいですか?

分類Dev

SQL Serverのクエリオプティマイザがそれ自体に対してテーブルを結合するのはなぜですか?

分類Dev

EFコアコードを使用してテーブルをそれ自体にブリッジする方法-最初

分類Dev

配列列を使用してテーブルをそれ自体に結合しますか?

分類Dev

Laravel、ピボットテーブルを介してそれ自体に関連するEloquentテーブル

分類Dev

Hive結合テーブルをそれ自体で何度も

分類Dev

mysqlで逆の順序でテーブルをそれ自体に結合します

分類Dev

MySQLでそれ自体と結合されたテーブル内部を更新します

分類Dev

テーブルの行に設定されている変数を使用したインクリメンタルループを使用して、テーブルをそれ自体に結合するにはどうすればよいですか?

分類Dev

テーブルをそれ自体にリンクし、リレーショナルIDを取得する

分類Dev

ヌル値でテーブルをそれ自体に参加

分類Dev

外部キーでそれ自体を参照しているテーブルのルート要素をプルアップする方法は?(ループ?)

分類Dev

列の上のセルにコンテンツが含まれているが、それ自体が空白の場合に、列内のセルを結合する方法

分類Dev

テーブルtbodyは、それ自体を1列の幅に制限します

Related 関連記事

  1. 1

    テーブルをそれ自体に右結合するSQL

  2. 2

    MySQL テーブルをそれ自体に結合する

  3. 3

    テーブルをそれ自体と結合し、画面に表示する

  4. 4

    SQL:テーブルをそれ自体に結合します

  5. 5

    MySQLテーブルをそれ自体で結合する

  6. 6

    テーブルをそれ自体と結合することは可能ですか?

  7. 7

    テーブルをそれ自体に結合して最大行を取得し、別のテーブルをそれに接続する方法

  8. 8

    行がなくなるまで、テーブルを親IDでそれ自体に結合します

  9. 9

    行がnullの場合に、2番目の「ON」基準を使用してテーブルをそれ自体と結合する方法

  10. 10

    テーブルを別のテーブルに結合してから、それ自体に結合します

  11. 11

    中間テーブルをそれ自体と結合し、それに新しい空の列を追加するにはどうすればよいですか?

  12. 12

    Laravelの雄弁なテーブルがそれ自体に結合され、すべての値を持つ1つの配列を取得する方法

  13. 13

    単一のテーブルをそれ自体で結合することは可能ですか?

  14. 14

    SQL Server2005でそれ自体を使用してテーブルを参照する

  15. 15

    テーブルをそれ自体で100回結合することは避けてください

  16. 16

    INNERJOINを使用せずにテーブルをそれ自体に結合するSQLSYNTANを理解するにはどうすればよいですか?

  17. 17

    SQL Serverのクエリオプティマイザがそれ自体に対してテーブルを結合するのはなぜですか?

  18. 18

    EFコアコードを使用してテーブルをそれ自体にブリッジする方法-最初

  19. 19

    配列列を使用してテーブルをそれ自体に結合しますか?

  20. 20

    Laravel、ピボットテーブルを介してそれ自体に関連するEloquentテーブル

  21. 21

    Hive結合テーブルをそれ自体で何度も

  22. 22

    mysqlで逆の順序でテーブルをそれ自体に結合します

  23. 23

    MySQLでそれ自体と結合されたテーブル内部を更新します

  24. 24

    テーブルの行に設定されている変数を使用したインクリメンタルループを使用して、テーブルをそれ自体に結合するにはどうすればよいですか?

  25. 25

    テーブルをそれ自体にリンクし、リレーショナルIDを取得する

  26. 26

    ヌル値でテーブルをそれ自体に参加

  27. 27

    外部キーでそれ自体を参照しているテーブルのルート要素をプルアップする方法は?(ループ?)

  28. 28

    列の上のセルにコンテンツが含まれているが、それ自体が空白の場合に、列内のセルを結合する方法

  29. 29

    テーブルtbodyは、それ自体を1列の幅に制限します

ホットタグ

アーカイブ