我有三张table:
用户提交的值
id | owner_id | value |
-----------------------
1 | 1 | 1337 |
2 | 2 | 1337 |
3 | 2 | 1337 |
4 | 1 | 1337 |
标签
id | owner_id | text |
---------------------------
1 | 1 | 'Tag 01' |
2 | 1 | 'Tag 02' |
3 | 1 | 'Tag 03' |
4 | 2 | 'Tag 04' |
用户提交的值标签
id | owner_id | tag_id | value_id |
-----------------------------------
1 | 1 | 1 | 1 |
2 | 1 | 2 | 1 |
3 | 1 | 3 | 1 |
所以基本上,用户可以提交值并输入任意数量的freetext标记来附加到该值。我需要将标签存储为属于特定用户的标签,并且我需要能够计算他们使用每个标签的次数。
我要完成的是从 user_submitted_value
加上标签。例如:
Query value with id 1:
id | owner_id | value | tags |
------------------------------------------------------
1 | 1 | 1337 | "'Tag 01','Tag 02','Tag 03'" |
Query all values belonging to user with id 1:
id | owner_id | value | tags |
------------------------------------------------------
1 | 1 | 1337 | "'Tag 01','Tag 02','Tag 03'" |
4 | 1 | 1337 | "" |
不知何故,我知道我需要加入一次或多次,但我对sql还不太熟悉,不知道该怎么做。
2条答案
按热度按时间ddhy6vgd1#
这是我的最终解决方案。很大程度上基于戈登·林诺夫提交的答案。
这个
WHERE
第二条JOIN
可以修改以获取给定用户的所有值。qnzebej02#
这似乎是一种相当神秘的数据格式——特别是因为
owner_id
在所有表格中重复。在任何情况下,我认为要获取给定用户的值和标记的基本查询如下所示: