構造の異なる2つのテーブルの結果を組み合わせる

ビラル・アーメド

私は2つのテーブルを持っています:

イベント

CREATE TABLE IF NOT EXISTS `event` (
          `eventId` bigint(20) NOT NULL AUTO_INCREMENT,
          `eventTime` bigint(20) NOT NULL COMMENT 'ex: 1431201865000 (epoch is milliseconds)',
          `sourceId` bigint(20) NOT NULL COMMENT 'ex: pole-code: 1 = JA005, patrolCarCode: 5000 = D4588',
          `plateNumber` varchar(40) COLLATE utf8_unicode_ci NOT NULL COMMENT 'ex: 5849',
          `plateGps` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'ex: 0.000000 N  0.000000 E') 
    ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ソース

CREATE TABLE IF NOT EXISTS `source` (
  `sourceId` bigint(20) NOT NULL AUTO_INCREMENT,
  `sourceName` varchar(100) COLLATE utf8_unicode_ci NOT NULL COMMENT 'ex: pole-code: JA005, patrolCarCode:D4588',
  `sourceSimIp` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'ex: 192.55.44.22',
  `sourceGps` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Only for Fixed source (Poles) ex: 25.110227 N  55.239798 E, 24.993183 N  55.250382 E, 0.000000 N  0.000000 E',
  PRIMARY KEY (`sourceId`),
  KEY `sourceName` (`sourceName`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

サンプルデータ

INSERT INTO `source` (`sourceId`, `sourceName`, `sourceSimIp`, `sourceGps`) VALUES
    (1, 'Pole 1', '74.200.230.71', '7.8731 N  80.7718 E'),
    (2, 'Car 1', '40.214.203.72', '')


INSERT INTO `event` (`eventId`, `eventTime`, `sourceId`, `plateNumber`, `plateGps`) 
VALUES
    (1, 1498806550534, 1, '1111', null),
    (2, 1498806550544, 2, '1111', '7.2936 N 80.6413 E'),
    (3, 1498806550554, 2, '1111', '7.9570 N 80.7601 E'),
    (4, 1498806550564, 2, '1112', '7.9580 N 80.7601 E'),
    (5, 1498806550584, 1, '1111', null),
    (6, 1498806550574, 1, '1111', '7.3010 N 80.3872 E')

質問:

ソースには2つのタイプがあります。1.静的ソース(ポールカメラ)2。動的ソース(移動車カメラ)

イベントテーブルでは、新しいエントリが静的ソースからのものである場合、そのGPS値はすでにソーステーブルに保存されているため、ソースIDのみを保存し、plateGPSフィールドを空白のままにしますが、動的ソースの場合、ソーステーブルにGPS値はありません。ソースは動的であり、各イベントには異なる場所があり、ソーステーブルを指すソースIDとともにイベントテーブルのplateGpsフィールドに保存されるためです(参照用)。

次に、ユーザーが「PlateNumber」を指定するクエリを作成する必要があります。また、システム内のすべてのGPSオカレンスをeventTime順にチェックする必要があります。

1つのPlateNumberは静的ソースと動的ソースで検出できるため、両方からGPSオカレンスを取得する動的な方法を探しています。

以下のクエリを作成できましたが、eventTimeの制限による順序は処理されません

select source.sourceGps  as 'sourceGps' from source where source.sourceId in (select event.sourceId   from event  where eventTime >= 1488312001000 and eventTime <= 1513886399000 and event.plateNumber = '1111' and plateGps is null) 
 union all 
select plateGps as 'sourceGps'  from event  where eventTime >= 1488312001000 and eventTime <= 1513886399000  and event.plateNumber = '1111' and length(plateGps) > 0 

誰かがそれを手伝ってくれる?

ゴードン・リノフ

おそらくあなたはただleft joinwithが必要ですorder by

select coalesce(s.sourceGps, e.plateGps) as sourceGps, 
from event e left join
     source s
     on s.sourceId = e.sourceId  
where e.eventTime >= 1488312001000 and e.eventTime <= 1513886399000 and
      e.plateNumber = '5327'
order by e.eventTime;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つの異なるテーブルの結合結果を組み合わせたSQL

分類Dev

2つのテーブルの結果を組み合わせる方法

分類Dev

1つのテーブルmysqlからの2つの異なるクエリの結果を組み合わせる方法

分類Dev

T-SQL-2つのテーブルの結果を2つの異なるWHERE句と組み合わせる方法

分類Dev

特定の結果レイアウトで異なる行数のテーブルを組み合わせる方法

分類Dev

3つのテーブルの結果を組み合わせる

分類Dev

SQLで2つの異なるテーブルの2つのフィールドを組み合わせる

分類Dev

異なる列を持つ2つの異なるテーブルを組み合わせる方法

分類Dev

一意のIDを持つ3つの異なるテーブルのmysqlの結果を組み合わせる方法

分類Dev

2つのForeachループを異なる配列結果と組み合わせる方法は?

分類Dev

2つのテーブルの結果を組み合わせて、SQLの単一の列に表示する方法

分類Dev

異なるテーブルの列を組み合わせる

分類Dev

同じ属性を持つ2つの異なるテーブルの値を組み合わせる方法

分類Dev

2つのテーブルの結果を組み合わせるSQLクエリ

分類Dev

2つの異なるクエリを1つのテーブルに組み合わせる方法は?

分類Dev

2つの異なるクエリの結果をマングースと組み合わせる方法は?

分類Dev

SQL-異なるテーブルの2つの日付をエラーなしで結合と組み合わせる方法

分類Dev

SQLServerの行数が異なる2つのテーブルを組み合わせる

分類Dev

異なるテーブルからの2つのSQLクエリを組み合わせる

分類Dev

2つのforeachループ内でxmlの結果を組み合わせる

分類Dev

返される結果のみが異なる2つのLINQクエリを組み合わせる

分類Dev

Mysqlで2つの異なるテーブルを組み合わせて並べ替える方法

分類Dev

関係のない2つのテーブルを組み合わせる

分類Dev

2つのデータの組み合わせ。構造の異なるフレーム

分類Dev

Rで2つのテーブルを組み合わせる

分類Dev

SQLServerで2つのテーブルを組み合わせる

分類Dev

2つのテーブルを組み合わせる

分類Dev

Laravelで2つのテーブルを組み合わせる

分類Dev

LINQ-2つのテーブルを結合し、異なる構造のビューモデルで結果を取得する

Related 関連記事

  1. 1

    2つの異なるテーブルの結合結果を組み合わせたSQL

  2. 2

    2つのテーブルの結果を組み合わせる方法

  3. 3

    1つのテーブルmysqlからの2つの異なるクエリの結果を組み合わせる方法

  4. 4

    T-SQL-2つのテーブルの結果を2つの異なるWHERE句と組み合わせる方法

  5. 5

    特定の結果レイアウトで異なる行数のテーブルを組み合わせる方法

  6. 6

    3つのテーブルの結果を組み合わせる

  7. 7

    SQLで2つの異なるテーブルの2つのフィールドを組み合わせる

  8. 8

    異なる列を持つ2つの異なるテーブルを組み合わせる方法

  9. 9

    一意のIDを持つ3つの異なるテーブルのmysqlの結果を組み合わせる方法

  10. 10

    2つのForeachループを異なる配列結果と組み合わせる方法は?

  11. 11

    2つのテーブルの結果を組み合わせて、SQLの単一の列に表示する方法

  12. 12

    異なるテーブルの列を組み合わせる

  13. 13

    同じ属性を持つ2つの異なるテーブルの値を組み合わせる方法

  14. 14

    2つのテーブルの結果を組み合わせるSQLクエリ

  15. 15

    2つの異なるクエリを1つのテーブルに組み合わせる方法は?

  16. 16

    2つの異なるクエリの結果をマングースと組み合わせる方法は?

  17. 17

    SQL-異なるテーブルの2つの日付をエラーなしで結合と組み合わせる方法

  18. 18

    SQLServerの行数が異なる2つのテーブルを組み合わせる

  19. 19

    異なるテーブルからの2つのSQLクエリを組み合わせる

  20. 20

    2つのforeachループ内でxmlの結果を組み合わせる

  21. 21

    返される結果のみが異なる2つのLINQクエリを組み合わせる

  22. 22

    Mysqlで2つの異なるテーブルを組み合わせて並べ替える方法

  23. 23

    関係のない2つのテーブルを組み合わせる

  24. 24

    2つのデータの組み合わせ。構造の異なるフレーム

  25. 25

    Rで2つのテーブルを組み合わせる

  26. 26

    SQLServerで2つのテーブルを組み合わせる

  27. 27

    2つのテーブルを組み合わせる

  28. 28

    Laravelで2つのテーブルを組み合わせる

  29. 29

    LINQ-2つのテーブルを結合し、異なる構造のビューモデルで結果を取得する

ホットタグ

アーカイブ