2011-12-20 23 views
1

我想从我的数据库中的3个表中获取信息。我正在努力获得4个领域。 'kioskid','kioskhours','videotime','sessiontime'。为了做到这一点,我想在子查询中加入。这是我到目前为止有:如何在子查询中添加2个连接?

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 

当我运行此查询,它的工作原理,但它显示的每一行,而不是仅仅显示每个信息亭ID的最后一排。这是为了显示基于行'ORDER BY pingid desc LIMIT 1'.

任何机构有一些想法?

+0

请显示您的表格结构,当前查询生成的内容以及您希望看到的内容。 –

回答

0

而是加入到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 
; 

注:我没有修复你的LEFT JOIN (...) AS v,因为我不明白它试图做什么,但它也被破坏了; ON子句没有引用任何列,并且在子查询中有ORDER BY没有意义,除非您还有LIMIT或其中没有内容。

+0

谢谢我只是没有为我的v查询添加限制。添加限制工作。 – user875139

0

那么,'v'子查询上的连接并不实际引用'v'子查询,'v'子查询甚至不包含kioskid字段,因此这无疑是问题的一部分。

为了更进一步,我们需要查看架构和示例数据。