mysql - 通过 JOINS 从表中检索数据
问题描述
我有三个表sessions
:urls
和visitors
。我需要以这样一种方式连接这三个表,即我应该能够从每个表中获取数据,并且返回的最大行数应该等于会话数。
以下是我的表的基本架构。
桌子sessions
session_id | url_id | referrer_id | country
-------------------------------------------
1234 | a1b1 | bb11 | US
4567 | x1y1 | ll33 | IN
6789 | a1b1 | ff99 | UK
桌子urls
id | url |
-----------------------------------------
a1b1 | https://url-1.com |
x1y1 | https://url-2.com |
bb11 | https://referrer-url-1.com |
ll33 | https://referrer-url-2.com |
ff99 | https://referrer-url-3.com |
桌子visitors
id | session_id | visiting_time |
-----------------------------------------
1 | 1234 | 447383930 |
2 | 4567 | 547383930 |
3 | 6789 | 647383930 |
我想要的最终输出应该如下所示:
session_id | visiting_time | url | referrer_url | country
------------------------------------------------------------------------------------------
1234 | 447383930 | https://url-1.com | https://referrer-url-1.com | US |
4567 | 547383930 | https://url-2.com | https://referrer-url-2.com | IN |
6789 | 647383930 | https://url-1.com | https://referrer-url-3.com | UK |
我想在表中映射url_id
到sessions
表id
中并从表中urls
获取相应的值并在名为的新列中具有值。类似地,将in table 与in table 映射并从table 中获取相应的值,并在名为 的新列中具有值。url
urls
url
referrer_id
sessions
id
urls
url
urls
referring_url
如您所见:使用sessions
andvisitors
连接很简单,可以通过以下方式完成:
select session_id, visiting_time, country
from sessions,
visitors
where sessions.session_id = visitors.session_id;
但是加入urls
table 并获得url
andreferring_url
有点棘手。我已经尝试过LEFT JOIN
,INNER JOIN
但无法使其工作。
任何有关查询或参考的帮助都会有所帮助。
谢谢!
解决方案
- 您应该避免使用基于逗号的隐式连接并使用基于显式
Join
的语法 - 您将需要两个
urls
表连接;一个拿来url
,另一个拿来referrer_url
。
尝试以下操作:
SELECT s.session_id,
v.visiting_time,
u1.url,
u2.url AS referrer_url,
s.country
FROM sessions AS s
JOIN visitors AS v ON v.session_id = s.session_id
JOIN urls AS u1 ON u1.id = s.url_id
JOIN urls AS u2 ON u2.id = s.referrer_id
推荐阅读
- python - 从 Erlang 到 Python 以及 Python 中的函数重载
- python - 如何在 VTK 中创建颜色图?
- windows - ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序 - scikit-learn+
- javascript -
显示在其他组件中 - javascript - 我可以在不丢失地图的情况下更改页面吗
- azure-devops - 如何自定义 Azure DevOps WorkItem 字段 Microsoft.VSTS.TCM.Steps
- scala - 无法为用户类型构造读取实例。在 Scala 中对 Doobie 的类型误解
- python - 从 python 列表导入图像 src 时无法在我的网站上查看图像
- javascript - html / js中的自动关闭警报
- python - 基于 n 列 Pandas 数据框的唯一 UUID(用于处理 ElasticSearch 上的重复项)