连接3个mysql表

连接3个mysql表,mysql,join,Mysql,Join,为了读取和输出有关网络许可证的信息,我每隔几分钟运行一个脚本,它调用一个命令行实用程序,并将信息转储到3个mysql表中。现在,我想获取用户所属的活动会话和组名(如果用户是组的成员) 我使用的3个表是: 表:lm_会议 Featureid(保存会话连接到的功能id) 用户名(使用许可证的人) 工作站(连接到许可证的系统) In(启动软件的日期和时间) Out(关闭软件的日期和时间) 密钥(会话id) 活动(是/否) 表lm_组 Featureid(保存组连接到的要素id 名称(组的名称)

为了读取和输出有关网络许可证的信息,我每隔几分钟运行一个脚本,它调用一个命令行实用程序,并将信息转储到3个mysql表中。现在,我想获取用户所属的活动会话和组名(如果用户是组的成员)

我使用的3个表是:

表:lm_会议

  • Featureid(保存会话连接到的功能id)
  • 用户名(使用许可证的人)
  • 工作站(连接到许可证的系统)
  • In(启动软件的日期和时间)
  • Out(关闭软件的日期和时间)
  • 密钥(会话id)
  • 活动(是/否)
表lm_组

  • Featureid(保存组连接到的要素id
  • 名称(组的名称)
  • 许可证(组的许可证数量)
表lm_组用户

  • 组id(用户连接到的组id)
  • 特征标识(特征标识*可能不必要)
  • 用户名(Username)
现在我有一个这样的疑问

SELECT s.*, g.* FROM lm_session AS s 
LEFT JOIN lm_group_user AS u ON s.user = u.user 
LEFT JOIN lm_group AS g ON g.id = u.group_id 
WHERE s.feature_id = :featureid AND s.active = 1
我确实获取了所有具有活动会话的用户,但未正确找到组的名称。如果用户是多个组的成员,则s.user=u.user仅找到第一个组。结果不是基于s.user=u.user和g.id=u.group\u id的组合


有人能帮我吗?

我在第一行的sql查询中发现错误:

从lm_会话中选择s.,g.作为s(非会话)

因为在查询的其余部分中使用s作为别名,但在第一行中,您将会话定义为别名,所以这是错误的。请在第一行中仅尝试s作为别名


干杯。

尝试运行以下查询:

SELECT
s.Username, 
s.Featuredid,
g.Name AS groupname

FROM lm_session s 
JOIN lm_group_user gu ON s.Username = gu.Username
LEFT JOIN lm_group g ON s.Featuredid = g.Featuredid

WHERE s.Active = 1
可选: 添加
按a.Username分组

(如果用户在
lm_session
表中有多个会话,您可能希望添加此行以避免重复,但您可以在不使用该行的情况下开始运行此查询,看看会发生什么。因为我认为用户可能在不同的软件中有多个会话)

你的意思当然是说
lm_session as s
为了让
s.
工作……也许你遇到了关联性问题,比如简而言之
A j B j C
(A j B)j C
A j(B j C)
,你不清楚你想要的是什么。