2017-04-12 15 views
0

私は簡単な作業であるように思っています。私のページがロードされる前Mysqlの2つのテーブルが結合しています。一意のレコードを持つ2番目のテーブルと、それぞれ最後のエントリ

Table devices: 
id, uid, devicecode, devicename, devicetype 

Table devicelogs: 
id, devicecode, timelogged, devicestatus 

、私は次のクエリですべてのユーザーのデバイスを取得します:私は、データベース内の2つのテーブルを持っている

$sql = "SELECT * FROM devices WHERE `uid`='1'"; 

これは私、私は、その後に使用するすべてのユーザーのデバイスを取得しますチェックボックスを使用してページ上に「スイッチ」を作成します。

チェックボックスのステータスを設定するには、そのデバイスの最後のデバイスが「devicelogs」テーブル(オンまたはオフ)にあったものを確認する必要があります。

私はdevicelogsテーブルに各デバイスの最後のレコードが表示されるような種類の結合を行わなければならないと思います。それについてどうやって行くかわからない、私は得ることができるすべての助けに感謝します。ありがとう。

+1

が重複する可能性を、それをjoinigにより、フィルタとして上記のクエリを使用することができ、各devicecode

select devicecode, max(timelogged) as max_timelogged from devicelogs group by devicecode 

ザ・最新timeloggedを取得します各グループのレコード](http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group) – Shadow

答えて

0

2つの手順でクエリを作成できます。まず第一に、あなたは、元のテーブルと[最後の取得の

select t1.*, t2.timelogged, t2.devicestatus 
from devices t1 
join devicelogs t2 
on  t1.devicecode = t2.devicecode 
join (
      select devicecode, max(timelogged) as max_timelogged 
      from devicelogs 
      group by devicecode 
     ) t3 
on  t2.devicecode = t3.devicecode and 
     t2.timelogged = t3.max_timelogged 
+0

最大値タイプの質問でレコードを取得することは、毎日ほとんど求められます。 Plsは、それぞれの質問に別々に答えようとするのではなく、重複したものとしてマークします。 – Shadow

+0

ステファノありがとう、私は今のコンセプトを理解しています!それは有り難いです。 – Bruno

関連する問題