Mysql SQL子查询获取比外部查询更多的行
我试图找出一种从不同的表中获取两个数据集的方法。下面是SQL的工作版本Mysql SQL子查询获取比外部查询更多的行,mysql,sql,Mysql,Sql,我试图找出一种从不同的表中获取两个数据集的方法。下面是SQL的工作版本 SELECT l.id AS teamId, l.leagueId, t.name AS teamName, a.id FROM leagues AS l LEFT JOIN ( SELECT a.id, a.teamId FROM activities AS a WHERE a.status=(:a) AND a.leagueId=(:l) AND a.apply_standing
SELECT l.id AS teamId, l.leagueId, t.name AS teamName, a.id
FROM leagues AS l
LEFT JOIN (
SELECT a.id, a.teamId
FROM activities AS a
WHERE a.status=(:a) AND a.leagueId=(:l)
AND a.apply_standings=(:p) AND a.activityCode = (:g)
) on a.teamId = l.teamId
JOIN teams AS t ON t.id = l.teamId
WHERE l.status !=(:s) AND l.leagueId=(:l)
ORDER BY teamId
LIMIT 55
TABLES
Teams
+-----------+-----------+
| id | name |
+-----------+-----------+
1 Scorpions
2 Jazz
...
League
+------------+-----------+
| leagueId | teamId |
+------------+-----------+
1 2
1 1
2 1
3 4
...
Activities
+-----------+----------------+---------+
| id | activityCode | teamId |
+-----------+----------------+---------+
1 game 1
2 social 2
3 .. 1
4 .. 3
...
此查询的问题是,如果有多个活动,则查询将只返回一个结果。我试图将上述语句转换为所选变量的子查询,但遇到了SQLSTATE[21000]:基数冲突:1241操作数应包含1列错误
本质上,我试图得到类似的结果
array(
"team_name",
array(
..activity details
),
array(
..activity details
),
array(
..activity details
),
),
"other Name",
array(
..activity details
),
array(
..activity details
),
array(
..activity details
),
);
我知道这不是我将接收的格式,但这是我能想到的最好的格式。因此,如果我理解正确,您希望:
- 所有具有球队id的俱乐部成员参赛作品
- 只有符合某些约束条件的条目(联盟ID、状态、排名、活动代码?)
- 然后获取这些条目的所有活动(如果有)
- 所有这些活动的结果是什么?(这个不太清楚)
- 按teamId列出结果
SELECT
cm.id AS teamId, cm.leagueId, t.name AS teamName, a.id,
a.homeId, a.awayId, a.score_away, a.score_home
FROM `clubs-members` AS cm
JOIN teams AS t ON t.id = cm.teamId
LEFT JOIN activities AS a ON (a.teamId = cm.teamId AND a.status=(:a)
AND a.apply_standings=(:p) AND a.activityCode = (:g) )
LEFT JOIN `activities-results` AS r ON r.activityId = a.id AND UNIX_TIMESTAMP(r.approved) != 0
WHERE cm.status !=(:s) AND cm.leagueId=(:l)
ORDER BY teamId
LIMIT 55
如果这能让您到达您要去的地方,请告诉我。首先,您的子查询没有连接到任何东西上。另外,为什么不直接从活动中选择并将其他表加入其中呢?最后,如果你能在SQLfiddle或其他东西中设置一些虚拟数据,这将极大地帮助我们。嗨,如果每个团队都有我可以参加的活动,你的建议将使一切变得相当容易。最终会是这样,但事实并非如此。因此,如果我要获取数据,我只会看到部分结果,而不是完整的团队列表——请参阅我对@adam的评论以获得更多澄清。给我几分钟,我会帮你分析一些东西。尽管如此,我仍然不明白你为什么不加入你的select。嗨,很抱歉,这绝对是一个错误。有一个ON语句。你的问题中仍然有一些令人困惑的错误(我从重新格式化中假设)。你能看一看吗?我想要1)俱乐部会员区中拥有相同联盟ID的球队名单。在新的sql up top中,leagues的sql表代表俱乐部成员。参数将是leagueId等于1或8,然后状态将为activie。我所追求的第二个数据集是联盟内球队的所有活动。我不会太担心其他信息,因为我可以很容易地看出,一旦我掌握了如何完成这两个数据集,Sql就不起作用了,它只需要有能力的团队,我想要有和的团队without@bushbrigade这是因为您的活动限制(比如a.status=(:a))。我把它移到了join上,我认为它应该可以工作(同样,我也不是100%确定MySQL中的语法是如何工作的)@bushbush很高兴我可以hep=D。我主要使用PL-SQL和MS-sqlserver。另外,如果你想让评论选择“@username”,它必须在评论的开头(就像上面我的一样)