>>>> 2012/09/07 09:11 -0400, Mark Haney >>>>
All I need is the most recent record for EACH machine ID, THEN to pull the
machine name from the table that has the name in it.
Somehow I'm missing something incredibly obvious here.
<<<<<<<<
That is not certain.
There is a fairly standard, fairly ugly means of getting all the latest records
by some one field:
SELECT *
FROM (SELECT MAX(date) AS date, mach_id
FROM lights
GROUP BY mach_id) AS ll
JOIN lights USING (mach_id, date)
This works if each pair (mach_id, date) is unique--and if it is, better so to
declare it and make an index of it, or maybe make it the primary key. To this
is the name-table joined:
SELECT *
FROM (SELECT MAX(date) AS date, mach_id
FROM lights
GROUP BY mach_id) AS ll
JOIN lights USING (mach_id, date)
JOIN machine USING (mach_id)
As for performance, maybe the suggested index helps (almost every table is owed
a primary key), or maybe to reverse the three tables (call "ll" a virtual
table).
If you really want to make a view out of it, under MySQL it can be only two
views, not one.
(I extensivly use views, but my tables are not big, and the traffic on them is
very little, about ten transactions each week, all by my hand. One of the views
is painfully slow.)
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql