gpt4 book ai didi

mysql - 将多个列连接到另一个表以返回数字的描述

转载 作者:行者123 更新时间:2023-11-29 22:07:17 25 4
gpt4 key购买 nike

我在连接选择中有多个表。其中一个表是用户所做的“事情”的评论列表。他们基本上给了它很多星星。 1 到 5。

两个主表:

地点

id    INT
name VARCHAR(128)

评论

review_id    INT
welcome INT
hospitality INT
condition INT

示例查询:

select p.name, r.welcome, r.hospitality, r.condition from places p
join reviews r on p.id = r.review_id

name nameA
welcome 1
hospitality 3
condition 4

我有一个单独的表(review_descriptors),其中包含给定星数的描述符,例如

1: bad
2: ok
3: good
4: very good
5: excellent

因此,第一个查询的典型行(包含所有联接)可能是:

name   welcome   hospitality   condition
nameA 1 3 4

但是我希望返回的数据是:

name   welcome   hospitality   condition
nameA bad good very good

描述符表

review_num   INT // this will match against the value of welcome, hospitality, condition
description VARCHAR(32)

我认为我不能简单地加入,因为每行有多个字段

另外,我不想在进入表的过程中解析数据,以防我稍后想全局更改评论描述符

有办法做到这一点吗?我猜这几乎就像是基于主要查询结果的反向查找

最佳答案

如果我理解你的数据结构,那么条件聚合就会做你想要的事情?

select p.name,
max(case when r.name = 'welcome' then d.description end) as welcome,
max(case when r.name = 'hospitality' then d.description end) as hospitality,
max(case when r.name = 'condition' then d.description end) as condition,
from places p join
reviews r
on p.id = r.id join
review_descriptors d
on r.numstars = d.numstars
group by p.name;

编辑:

另一方面,如果结果已经经过透视,则需要多个联接:

select p.*, dw.description as welcome, dh.descrption as hospitality,
dc.condition as condition
from places p join
reviews r
on p.id = r.id left join
review_descriptors dw
on r.welcome = dw.numstars lef tjoin
review_descriptors dh
on r.hospitality = dh.numstars lef tjoin
review_descriptors dc
on r.condition = dc.numstars

关于mysql - 将多个列连接到另一个表以返回数字的描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32035602/

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