Sql 如何在子查询中添加2个联接?

Sql 如何在子查询中添加2个联接?,sql,Sql,我试图从数据库中的3个表中获取信息。我正在尝试获取4个字段。”kioskid、kioskhours、videotime、sessiontime。为了做到这一点,我正在尝试子查询中的联接。这就是我到目前为止所做的: SELECT k.kioskid, k.hours, v.time, s.time FROM `nsixty_kiosks` as k LEFT JOIN (SELECT time FROM `nsixty_videos` ORDER BY videoid) as v ON kios

我试图从数据库中的3个表中获取信息。我正在尝试获取4个字段。”kioskid、kioskhours、videotime、sessiontime。为了做到这一点,我正在尝试子查询中的联接。这就是我到目前为止所做的:

SELECT k.kioskid, k.hours, v.time, s.time
FROM `nsixty_kiosks` as k
LEFT JOIN (SELECT time
FROM `nsixty_videos` 
ORDER BY videoid) as v
ON kioskid = k.kioskid LEFT JOIN
(SELECT kioskid, time
FROM `sessions` 
ORDER BY pingid desc LIMIT 1) as s ON s.kioskid = k.kioskid
WHERE hours is NOT NULL
当我运行这个查询时,它会工作,但它会显示每一行,而不是只显示每个kiosk id的最后一行。这意味着根据行
“ORDER BY pingid desc LIMIT 1”来显示。


有人有什么想法吗?

好吧,“v”子查询上的连接实际上并不引用“v”子查询,“v”子查询甚至不包含要连接的kioskid字段,因此这无疑是问题的一部分


要进一步了解,我们需要查看模式和示例数据。

您可以使用相关子查询,而不是加入到
s

SELECT k.kioskid,
       k.hours,
       v.time,
       ( SELECT time
           FROM sessions
          WHERE sessions.kioskid = k.kioskid
          ORDER
             BY pingid DESC
          LIMIT 1
       )
  FROM nsixty_kiosks AS k
  LEFT
  JOIN ( SELECT time
           FROM `nsixty_videos` 
          ORDER BY videoid
       ) AS v
    ON kioskid = k.kioskid
 WHERE hours IS NOT NULL
;

注意:我没有将你的
左连接(…)修复为v
,因为我不明白它试图做什么,但它也坏了;
ON
子句不引用它的任何列,在子查询中使用
ORDER BY
没有任何意义,除非其中还包含
LIMIT
或诸如此类的内容。

请显示您的表结构、当前查询生成的内容,谢谢,我只是没有给我的v查询增加限制。增加限额有效。