Sql 如何在子查询中添加2个联接?
我试图从数据库中的3个表中获取信息。我正在尝试获取4个字段。”kioskid、kioskhours、videotime、sessiontime。为了做到这一点,我正在尝试子查询中的联接。这就是我到目前为止所做的: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
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查询增加限制。增加限额有效。