开发者

Single query to get data from 3 separate tables based on provided timestamp

I'm working with three tables which can be summarized as follows:

Table1 (pid, created, data, link1) Table2 (pid, created, data) Table3 (link1, created, data)

The created field is a UNIX timestamp, and the data field is the same format in each table.

I want to get the data in all 3 tables such that Table1.pid = Table2.pid AND Table1.link1 = Table3.link1 AND created is less than and closest to a given timestamp value.

So, as an example, say I provide a date of May 开发者_JS百科7, 2011, 1:00pm. I'd want the data record from each table created most recently before this date-time.

Now I've managed to do this in a rather ugly single query involving sub-queries (using either INNER JOINs or UNIONs), but I'm wondering whether it can be done w/o sub-queries in a single query? Thanks for any suggestions.


Obviously I haven't really run the query, but it seems like it would do whatever you need if I'm understanding your question right.

t1.pid and t2.pid are the same, t1.link1 and t3.link1 are the same, and none of the .created are above your time, and you want the row closest to the date.

SELECT t1.data, t2.data, t3.data FROM Table1 t1, Table2 t2, Table3 t3 WHERE t1.pid = t2.pid AND t1.link1 = t3.link1 AND GREATEST(t1.created,t2.created,t3.created) < 'your-formatted-time' ORDER BY GREATEST(t1.created,t2.created,t3.created) DESC;

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜