【问题标题】:Two tables Select Inner Join with order by and where and limit clauses两个表 Select Inner Join 与 order by 和 where 和 limit 子句
【发布时间】:2018-08-18 08:37:25
【问题描述】:

所以我有这两张桌子:

socc_matches:

`mc_id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
`mc_analystid` int NOT NULL,
`mc_teamid` int NOT NULL, 
`mc_date` date NOT NULL,
`mc_hometeam` varchar(60) NOT NULL,
`mc_awayteam` varchar(60) NOT NULL,
`mc_shots` tinyint(40)

socc_shots:

`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
`idmatch` int NOT NULL,
`idplayer` int,
`playername` varchar(60)

我想从 socc_shots 中获取所有 idmatch 等于表 socc_matches order by date 中的 LAST 3 mc_id 的行

注意:idmatch 是 mc_id 的外键

我试过这个查询:

$conn = connection ();
$stmt = $conn->prepare('SELECT * FROM socc_shots INNER JOIN socc_matches ON socc_matches.mc_id = socc_shots.idmatch WHERE socc_matches.mc_id = socc_shots.idmatch  ORDER BY socc_matches.mc_date desc LIMIT 3');

if (!$stmt->execute()) {
    print_r($stmt->errorInfo());
    }

   $r = $stmt->fetchAll();

但没有检索到我想要的数据(查询错误)

我错过了什么?

提前致谢。

【问题讨论】:

  • 更新您的问题添加适当的数据样本和预期结果
  • @scaisEdge 好的,我会这样做
  • 你的 where 子句 WHERE socc_matches.mc_teamid = socc_shots ORDER 中似乎有一个没有字段的表,socc_shots 后面应该有一个字段名吗?
  • 附注:您的名字使查询变得难以理解。 mc_id 听起来像一个名为 mc 的表的 ID。是这样吗?什么是mcidmatch 似乎是名为matchmatches 的表的ID,但是为什么开头没有下划线和id,而在mc_id 中,id 出现在末尾?两种不同类别的 ID?那么mc_teamid 是一个名为mc_team 的表的ID 呢?所以mc,不管它是什么,有团队吗?
  • 这是粗体部分的答案:SELECT * FROM socc_shots WHERE idmatch in (SELECT mc_id FROM socc_matches WHERE mc_teamid = 1 ORDER BY mc_date desc LIMIT 3)

标签: php mysql sql select inner-join


【解决方案1】:

这是无效的:FROM socc_matches.mc_id, socc_shots.idmatch FROM socc_matches

这是不完整的:WHERE socc_matches.mc_teamid = socc_shots

更正:

SELECT * 
FROM socc_matches 
INNER JOIN socc_shots ON socc_matches.mc_id = socc_shots.idmatch 
WHERE socc_matches.mc_teamid = socc_shots.mc_teamid
ORDER BY socc_matches.mc_date desc
LIMIT 3

(将 socc_shots.mc_teamid 替换为该表中该列被调用的任何内容。或者为此使用一些值,例如 WHERE socc_matches.mc_teamid = 123。)

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    相关资源
    最近更新 更多