这个简单的左连接操作不起作用,但为什么呢?
This simple left join operation doesn't work, but why?
我对这个简单的 mysql-查询有点困惑:
SELECT
`user`.`id`,
`user`.`name`
FROM
`#__users` `user`
LEFT JOIN
(SELECT
`_s`.`userId`,
SUM(`_s`.`fild12`) AS `fild12`,
SUM(`_s`.`fild13`) AS `fild13`
FROM
`#__logbookEventdata` `_s`
GROUP BY `_s`.`userId`) `stats`
ON
(`stats`.`userId`=`user`.`id`)
它returns这个输出:
id | name
----+-------------
291 | bla
289 | Super User
290 | user1
实际上我预计 stats 中的列会添加到输出中。但他们不是。当我简单地调用 stats-SELECT-query 时,我得到这个输出:
userId | fild12 | fild13
--------+--------+--------
289 |15 |0
290 |0 |0
我不明白为什么这不起作用。我希望你们能帮助我。
谢谢!
您必须将 stats
中的字段添加到主 select
:
SELECT
`user`.`id`,
`user`.`name`,
`stats`.*
FROM
`#__users` `user`
LEFT JOIN
(SELECT
`_s`.`userId`,
SUM(`_s`.`fild12`) AS `fild12`,
SUM(`_s`.`fild13`) AS `fild13`
FROM
`#__logbookEventdata` `_s`
GROUP BY `_s`.`userId`) `stats`
ON
(`stats`.`userId`=`user`.`id`)
你有两套。首先是用户,其次是统计数据。你从第一到第二。首先是所有行,然后是所有行。如果您更改设置的顺序而不是保持相同的结果,因为基行(在 table 之后)与连接的行(在左连接子选择之后)不相等。结果将所有行保留在 table/subquery 之前。
我建议你改变转置两组。
我对这个简单的 mysql-查询有点困惑:
SELECT
`user`.`id`,
`user`.`name`
FROM
`#__users` `user`
LEFT JOIN
(SELECT
`_s`.`userId`,
SUM(`_s`.`fild12`) AS `fild12`,
SUM(`_s`.`fild13`) AS `fild13`
FROM
`#__logbookEventdata` `_s`
GROUP BY `_s`.`userId`) `stats`
ON
(`stats`.`userId`=`user`.`id`)
它returns这个输出:
id | name
----+-------------
291 | bla
289 | Super User
290 | user1
实际上我预计 stats 中的列会添加到输出中。但他们不是。当我简单地调用 stats-SELECT-query 时,我得到这个输出:
userId | fild12 | fild13
--------+--------+--------
289 |15 |0
290 |0 |0
我不明白为什么这不起作用。我希望你们能帮助我。 谢谢!
您必须将 stats
中的字段添加到主 select
:
SELECT
`user`.`id`,
`user`.`name`,
`stats`.*
FROM
`#__users` `user`
LEFT JOIN
(SELECT
`_s`.`userId`,
SUM(`_s`.`fild12`) AS `fild12`,
SUM(`_s`.`fild13`) AS `fild13`
FROM
`#__logbookEventdata` `_s`
GROUP BY `_s`.`userId`) `stats`
ON
(`stats`.`userId`=`user`.`id`)
你有两套。首先是用户,其次是统计数据。你从第一到第二。首先是所有行,然后是所有行。如果您更改设置的顺序而不是保持相同的结果,因为基行(在 table 之后)与连接的行(在左连接子选择之后)不相等。结果将所有行保留在 table/subquery 之前。 我建议你改变转置两组。