gpt4 book ai didi

mysql - 连接三个表以获取标签列表

转载 作者:行者123 更新时间:2023-11-29 06:49:02 24 4
gpt4 key购买 nike

我有这三个表:

用户提交的值

  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 |

基本上,用户可以提交值并输入任意数量的自由文本标签以附加到该值。我需要将标签存储为属于特定用户,并且需要能够计算他们使用每个标签的次数。

我想要完成的是一个查询,该查询从 user_subscribed_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 |                           "" |

我知道我需要 JOIN 一次或多次,但我对 SQL 不太熟悉,无法弄清楚具体如何操作。

最佳答案

这似乎是一种相当神秘的数据格式 - 特别是因为 owner_id 在所有表中重复。

无论如何,我认为您想要获取给定用户的值和标签的基本查询如下所示:

select usv.owner_id,
group_concat(distinct usvt.value_id) as values,
group_concat(distinct t.text) as tags
from user_submitted_value usv join
user_submitted_value_tag usvt
on usv.value_id = usvt.value_id and usv.owner_id = usvt.owner_id join
tags t
on usvt.tag_id = t.id and usvt.owner_id = t.owner_id
group by usv_owner_id;

关于mysql - 连接三个表以获取标签列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48242986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com