0

db_events.eventsフィールドからだけでなく、いくつかのdb_system.devicesフィールドと結合するために、このクエリ(thx sgeddes)を変更しようとして頭が壊れています

SELECT e.* 
FROM db_events.events e 
   JOIN (
      SELECT Max(id) MaxId, device_id
      FROM db_events.events
      GROUP BY device_id ) e2 on e.Id = e2.MaxId AND e.device_id = e2.device_id
WHERE e.device_id IN (
            SELECT device_id 
            FROM db_system.devices 
            WHERE vendor = 1)
ORDER BY e.id DESC

サブクエリを繰り返さずに取得するにはどうすればよいですか:

            SELECT * 
            FROM db_system.devices 
            WHERE vendor = 1

db_system.devices.brand最終結果を取得して結合する必要がありdb_system.devices.model、それを段階的に変更しようとしました。一時テーブルで試しました。単純なものであると思われますが、できませんでした。もちろんありがとうございました。 ..

4

1 に答える 1

3

これは、あなたの望むことですか?

SELECT  e.*, a.* 
FROM    db_events.events e 
        INNER JOIN 
        (
            SELECT Max(id) MaxId, device_id
            FROM db_events.events
            GROUP BY device_id 
        ) e2 on e.Id = e2.MaxId AND 
                e.device_id = e2.device_id
        INNER JOIN db_system.devices a
            ON e.device_id = a.device_id  AND 
                a.vendor = 1
ORDER   BY e.id DESC

条件は句a.vendor = 1に移動することもできWHERE、使用しているので結果は同じですINNER JOIN

SELECT ....
FROM   .... JOIN ....
WHERE  a.vendor = 1
ORDER  BY ...
于 2013-02-19T13:50:10.227 に答える