2011-12-20 55 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字段,因此這無疑是問題的一部分。

爲了更進一步,我們需要查看架構和示例數據。