I am trying to get information from 3 tables in my database. I am trying to get 4 fields. ‘kioskid’, ‘kioskhours’, ‘videotime’, ‘sessiontime’. In order to do this, i am trying a join in a subquery. This is what I have so far:
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
When I run this query, it works but it shows every row instead of just showing the last row of each kiosk id. Which is meant to show based on the line 'ORDER BY pingid desc LIMIT 1'.
Any body have some ideas?
Instead of joining to
s, you can use a correlated subquery:N.B. I didn’t fix your
LEFT JOIN (...) AS v, because I don’t understand what it’s trying to do, but it too is broken; theONclause doesn’t refer to any of its columns, and there’s no point in having anORDER BYin a subquery unless you also have aLIMITor whatnot in there.