我有以下tabels作爲例子創建具有一個視圖上加入多個標籤
球拍
--------------------
| id | Name |
| 1 | Raquet 1 |
| 2 | Raquet 2 |
--------------------
字符串
--------------------
| id | Name |
| 1 | String 1 |
| 2 | String 2 |
| 3 | String 3 |
| 4 | String 4 |
--------------------
標籤
--------------------
| id | Name |
| 1 | Label 1 |
| 2 | Label 2 |
| 3 | Label 3 |
| 4 | Label 4 |
--------------------
Raquet_Labels
--------------------
| r_id | l_id |
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
| 2 | 4 |
--------------------
String_Labels
--------------------
| s_id | l_id |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 3 | 1 |
| 3 | 3 |
| 4 | 3 |
| 4 | 4 |
--------------------
我想匹配所有列表中的所有的球拍,絃樂組合,其中字符串應該有相應的球拍的所有標籤。
例如
球拍1具有標籤1,2 球拍2具有標籤3,4
字符串1具有標籤1,2,3 字符串2具有標籤1,2 字符串3具有標籤1,3 字符串4具有標籤3,4
從上述 - 字符串1具有一切在球拍1個 字符串2的一部分已全部是球拍1一部分的標籤標籤0字符串3不具有任何球拍 串4的一部分具有一切在球拍2
繼部分標籤是期望
--------------------
| r_id | s_id |
| 1 | 1 |
| 1 | 2 |
| 2 | 4 |
--------------------
SQL創建所需要的數據的標籤。
create table raquet(id integer not null, name varchar(256) not null);
insert into raquet values (1,'Raquet 1'), (2,'Raquet 2'), (3,’Raquet 3’);
create table string(id integer not null, name varchar(256) not null);
insert into string values (1,'String 1'), (2,'String 2'), (3,'String 3'), (4,'String 4');
create table label(id integer not null, name varchar(256) not null);
insert into label values (1,'Label 1'), (2,'Label 2'), (3,'Label 3'), (4,'Label 4');
create table raquet_labels(r_id integer not null, l_id integer not null);
insert into raquet_labels values (1,1), (1,2), (2,3), (2,4);
create table string_labels(s_id integer not null, l_id integer not null);
insert into string_labels values (1,1), (1,2), (1,3), (2,1), (2,2), (3,1), (3,3), (4,3), (4,4);
那麼,你有什麼已經嘗試過? – Gasper
聽起來像作業lol – Zi0n1
@Gasper - 我試了很長時間。我無法真正獲得循環或某種遞歸的好方法。可能是這不是正確的思考方式。但是,我沒有一個具體的步驟,我可以說,我得到了一些答案。我主要是在嘗試與路口相交。 –