結合を使用して2つの異なるテーブルから2つの列を選択する方法

Divyangパテル

問題の説明:-2つのテーブルからレコードを取得します。1つは出席で、もう1つは特定のユーザーに関する特定の日付間の訪問です。

私は2つのテーブルを持っています1つは出席で2つ目は訪問です

1)出席

+-------------+------------+---------------------+
| user        | date_today | in_time             |
+-------------+------------+---------------------+
| MCCuser0036 | 25-02-2019 | 25-02-2019 10:59:08 |
| MCCuser0036 | 12-03-2019 | 12-03-2019 10:59:54 |
| MCCuser0036 | 14-03-2019 | 14-03-2019 11:01:11 |
| MCCuser0036 | 25-01-2019 | 25-01-2019 11:02:09 |
| MCCuser0036 | 25-03-2019 | 25-03-2019 11:03:10 |
| MCCuser0035 | 25-03-2019 | 25-03-2019 11:39:38 |
| MCCuser0036 | 26-03-2019 | 26-03-2019 11:30:47 |
| MCCuser0036 | 27-03-2019 | 27-03-2019 10:36:30 |
| MCCuser0036 | 28-03-2019 | 28-03-2019 17:18:01 |
| MCCuser0036 | 01-04-2019 | 01-04-2019 15:29:08 |
| MCCuser0036 | 08-04-2019 | 08-04-2019 23:01:57 |
| MCCuser007  | 26-04-2019 | 26-04-2019 20:04:36 |
| MCCuser0036 | 27-04-2019 | 27-04-2019 21:06:17 |
+-------------+------------+---------------------+

2)訪問

+-------------+------------+---------------------+
| username    | add_time   | visit_time_in       |
+-------------+------------+---------------------+
| MCCuser0036 | 13-02-2019 | 13-02-2019 11:46:55 |
| MCCuser0036 | 14-02-2019 | 14-02-2019 11:47:04 |
| MCCuser0036 | 14-02-2019 | 14-02-2019 11:51:07 |
| MCCuser0036 | 14-02-2019 | 14-02-2019 11:51:30 |
| MCCuser0036 | 14-02-2019 | 14-02-2019 11:51:36 |
| MCCuser0036 | 18-02-2019 | 18-02-2019 15:09:42 |
| MCCuser0036 | 20-02-2019 | 20-02-2019 12:11:30 |
| MCCuser0036 | 25-02-2019 | 25-02-2019 13:05:42 |
| MCCuser0036 | 11-03-2019 | 11-03-2019 12:48:28 |
| MCCuser0036 | 01-04-2019 | 01-04-2019 15:55:45 |
| MCCuser007  | 26-04-2019 | 26-04-2019 20:04:55 |
| MCCuser007  | 26-04-2019 | 26-04-2019 20:05:10 |
| MCCuser0036 | 27-04-2019 | 27-04-2019 21:06:55 |
+-------------+------------+---------------------+

私が欲しいのは、特定のユーザーの特定の日付範囲での出席と訪問の記録です。

私の出力は、最初の出席、次にその日のそのユーザーのすべての訪問のようになります

+----------+------------------------+----------+---------------------+
|user      |in_time                 |username  |visit_time_in        |
+----------+------------------------+----------+---------------------+
|given user|attendence of given date|given user|visits of given user |
+----------+------------------------+----------+---------------------+

私はこのクエリを使用していますが、空のセットと警告が表示され、mysqlと結合についての深い知識がないため、正しい方法でこれを行っているかどうかわかりません。

SELECT a.user,a.in_time,v.username,v.visit_time_in 
   FROM attendence AS a 
   INNER JOIN visits AS v ON a.user=v.username 
      WHERE a.user='MCCuser0036' 
      AND a.in_time BETWEEN STR_TO_DATE('01-04-2019', '%d-%m-%Y') 
      AND STR_TO_DATE('27-04-2019', '%d-%m-%Y') 
   ORDER BY a.in_time,v.visit_time_in DESC; 

Empty SET, 22 WARNINGS (0.00 sec) 

注:主キーと外部キーはなく、date_today、in_timeとadd_time、visit_time_inがあり、user、username列は両方ともvarcharです。

@SebastianBroschの更新された編集の答えは私が望んでいたものですが、DBにもっと多くの列があるので、基本構造を取得した後、それにいくつかの列を追加し、それをクエリします

SELECT * FROM (SELECT 'attendence' AS 'type', user AS 'username', STR_TO_DATE(in_time, '%d-%m-%Y %H:%i:%s') AS 'time_in', STR_TO_DATE(out_time, '%d-%m-%Y %H:%i:%s') AS 'time_out', location_in as 'place_in' FROM attendence UNION ALL SELECT 'visit', username, STR_TO_DATE(visit_time_in, '%d-%m-%Y %H:%i:%s'), STR_TO_DATE(visit_time_out, '%d-%m-%Y %H:%i:%s'), in_address FROM visits) t WHERE t.username = 'MCCuser0036' AND time_in BETWEEN STR_TO_DATE('01-01-2019', '%d-%m-%Y %H:%i:%s') AND STR_TO_DATE('27-04-2019', '%d-%m-%Y %H:%i:%s') ORDER BY time_in ASC;

しかし、それは私に予期しない結果を与えています

+------------+-------------+---------------------+---------------------+----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
| type       | username    | time_in             | time_out            | address_in                                                                                                           | address_out                                                                                         |
+------------+-------------+---------------------+---------------------+----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
| attendence | MCCuser0036 | 2019-01-25 11:02:09 | 2019-01-25 11:02:10 | in_address                                                                                                           | out_address                                                                                         |
| visit      | MCCuser0036 | 2019-02-13 11:46:55 | 2019-02-13 11:47:00 | Sewri - Chembur Rd, Trombay Indusrial Area, Antop Hill, Mumbai, Maharashtra 400037, India                            | Sewri - Chembur Rd, Trombay Indusrial Area, Antop Hill, Mumbai, Maharashtra 400037, India           |
| visit      | MCCuser0036 | 2019-02-14 11:47:04 | 2019-02-14 11:47:10 | Sewri - Chembur Rd, Trombay Indusrial Area, Antop Hill, Mumbai, Maharashtra 400037, India                            | Sewri - Chembur Rd, Trombay Indusrial Area, Antop Hill, Mumbai, Maharashtra 400037, India           |
| visit      | MCCuser0036 | 2019-02-14 11:51:07 | 2019-02-14 11:51:10 | Kokri Agar Road, Koliwada, Kokri Agar, Sion, Mumbai, Maharashtra 400037, India                                       | Kokri Agar Road, Koliwada, Kokri Agar, Sion, Mumbai, Maharashtra 400037, India                      |
| visit      | MCCuser0036 | 2019-02-14 11:51:30 | 2019-02-14 11:51:34 | Kokri Agar Road, Koliwada, Kokri Agar, Sion, Mumbai, Maharashtra 400037, India                                       | Kokri Agar Road, Koliwada, Kokri Agar, Sion, Mumbai, Maharashtra 400037, India                      |
| visit      | MCCuser0036 | 2019-02-14 11:51:36 | 2019-02-14 11:51:39 | Kokri Agar Road, Koliwada, Kokri Agar, Sion, Mumbai, Maharashtra 400037, India                                       | Kokri Agar Road, Koliwada, Kokri Agar, Sion, Mumbai, Maharashtra 400037, India                      |
| visit      | MCCuser0036 | 2019-02-18 15:09:42 | NULL                | Kokri Agar Road, Koliwada, Kokri Agar, Sion, Mumbai, Maharashtra 400037, India                                       |                                                                                                     |
| visit      | MCCuser0036 | 2019-02-20 12:11:30 | 2019-02-20 13:44:36 | Sewri - Chembur Rd, Trombay Indusrial Area, Antop Hill, Mumbai, Maharashtra 400037, India                            | Building No 57, Gaurav Harmony, CGS Colony, Sector 7, Antop Hill, Mumbai, Maharashtra 400037, India |
| attendence | MCCuser0036 | 2019-02-25 10:59:08 | 2019-02-25 10:59:16 | in_address                                                                                                           | out_address                                                                                         |
| visit      | MCCuser0036 | 2019-02-25 13:05:42 | NULL                | Kokri Agar Road, Koliwada, Kokri Agar, Sion, Mumbai, Maharashtra 400037, India                                       |                                                                                                     |
| visit      | MCCuser0036 | 2019-03-11 12:48:28 | NULL                | jay maharashNagar kokri agar S.M road anophill church Near By sayyed alam, musjid, Mumbai, Maharashtra 400037, India |                                                                                                     |
| attendence | MCCuser0036 | 2019-03-12 10:59:54 | 2019-03-12 11:00:24 | in_address                                                                                                           | out_address                                                                                         |
| attendence | MCCuser0036 | 2019-03-14 11:01:11 | 2019-03-14 11:01:28 | in_address                                                                                                           | out_address                                                                                         |
| attendence | MCCuser0036 | 2019-03-25 11:03:10 | 2019-03-25 11:16:12 | in_address                                                                                                           | out_address                                                                                         |
| attendence | MCCuser0036 | 2019-03-26 11:30:47 | NULL                | in_address                                                                                                           | out_address                                                                                         |
| attendence | MCCuser0036 | 2019-03-27 10:36:30 | 2019-03-27 10:49:05 | in_address                                                                                                           | out_address                                                                                         |
| attendence | MCCuser0036 | 2019-03-28 17:18:01 | NULL                | in_address                                                                                                           | out_address                                                                                         |
| attendence | MCCuser0036 | 2019-04-01 15:29:08 | NULL                | in_address                                                                                                           | out_address                                                                                         |
| visit      | MCCuser0036 | 2019-04-01 15:55:45 | NULL                | 736, Aala Hazrat Rd, Jagruti Nagar, Nehru Nagar, Kurla East, Mumbai, Maharashtra 400071, India                       |                                                                                                     |
| attendence | MCCuser0036 | 2019-04-11 15:17:56 | NULL                | in_address                                                                                                           | out_address                                                                                         |
| attendence | MCCuser0036 | 2019-04-23 17:41:05 | 2019-04-23 17:42:54 | in_address                                                                                                           | out_address                                                                                         |
+------------+-------------+---------------------+---------------------+----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+

誰かが私に理由を指摘できますか?

セバスチャン・ブロッシュ

結果を得るSTR_TO_DATEには、a.in_time列でもを使用する必要があります

SELECT a.user, a.in_time, v.username, v.visit_time_in 
FROM attendence AS a INNER JOIN visits AS v ON a.user = v.username 
WHERE a.user = 'MCCuser0036' 
  AND STR_TO_DATE(a.in_time, '%d-%m-%Y') BETWEEN STR_TO_DATE('01-04-2019', '%d-%m-%Y') AND STR_TO_DATE('27-04-2019', '%d-%m-%Y')
ORDER BY STR_TO_DATE(a.in_time, '%d-%m-%Y'), STR_TO_DATE(v.visit_time_in, '%d-%m-%Y') DESC;

は有効な日付値ではないため、条件a.in_time BETWEEN str_to_date('01-04-2019', '%d-%m-%Y') and str_to_date('27-04-2019', '%d-%m-%Y')をtrueにできないため、結果は得られませんa.in_timeまた、STR_TO_DATEonを使用しORDER BY、レコードを日付値でソートする必要があります。

注:あなたが使用する必要があるDATETIME列のデータ型in_timevisit_time_inおよびDATE上のデータ型add_timeとをdate_todayしたがって、STR_TO_DATE最初に変換関数(のようなを使用せずにフィルタリングおよびソートできます


1つのクエリで2つのテーブルの行のみを取得するには、次のUNION ALLように使用できます

SELECT type, username, DATE_FORMAT(time_value, '%d-%m-%Y %H:%i:%s') AS 'time_value'
FROM (
    SELECT 'attendence' AS 'type', `user` AS 'username', STR_TO_DATE(in_time, , '%d-%m-%Y') AS 'time_value'
    FROM attendence 
    UNION ALL
    SELECT 'visit', username, STR_TO_DATE(visit_time_in, '%d-%m-%Y')
    FROM visits
) t 
WHERE t.username = 'MCCuser0036'
    AND time_value BETWEEN STR_TO_DATE('01-04-2019', '%d-%m-%Y') AND STR_TO_DATE('27-04-2019', '%d-%m-%Y')
ORDER BY type, time_value DESC

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

2つのテーブルを結合してから、2つの異なる列を選択するにはどうすればよいですか?

分類Dev

mysqlは、3つのテーブルから1つの異なる列を選択して結合します

分類Dev

2つの異なるテーブルから2つの異なる列を選択します

分類Dev

結合を使用して2つのテーブルから2つの列を選択します

分類Dev

2つのテーブルを結合し、結果から選択する

分類Dev

SQL:CASEを使用して、2つの異なるテーブルから特定の要素を選択します

分類Dev

2つのテーブルから結合を使用してSQLを選択し、1つのjsonオブジェクトを取得する方法

分類Dev

結合を共有しない2つの異なるテーブルから2つのIDの可能なすべての組み合わせを選択する方法

分類Dev

2つの異なるテーブルから列を結合しようとしています

分類Dev

2つのテーブルを結合し、両方のテーブルの共通の列を使用して特定の列を選択する方法

分類Dev

左外部結合とon句を使用して、共通の列を持つ2つの異なるテーブルからデータを取得する

分類Dev

nullを含む2つのテーブルからすべての結合行を選択する方法

分類Dev

2つの異なるテーブルから特定の列の合計を取得して印刷する方法

分類Dev

sql-複数のテーブルの結合から1つの異なる列のみを持つ複数の列を選択する方法

分類Dev

2つの異なるテーブルからSQLを選択

分類Dev

2つの異なるテーブルから2つの異なる列の合計を取得してグループ化する方法

分類Dev

結合を使用して2つの異なるテーブルの2つの列を乗算しながら、行を複製します

分類Dev

2つの異なるテーブルからの2つのクエリを結合する方法

分類Dev

SQL。2つの異なるテーブルからすべてのシリアル番号を選択します

分類Dev

選択した2つの列がテーブルの1つの列からのものであるが、条件が異なる場所を選択します

分類Dev

2つの異なるデータベースから異なるテーブルを結合する方法は?

分類Dev

SQLキーを使用して2つのテーブルを異なる列に結合します

分類Dev

SQL2つの異なるテーブルから同じ列を選択します

分類Dev

Mysql異なるテーブルの2つの列を選択します

分類Dev

Mysqlを使用して異なる値で2つのテーブルを結合する方法

分類Dev

結合しているテーブルの列から上位1つの値のみを選択しますか?

分類Dev

PHPは、2つのテーブルから異なるデータを収集して結合します

分類Dev

SQLは、列名が異なる2つの異なるテーブルから行を選択します

分類Dev

内部結合を使用して、異なる名前の2つのテーブルを結合します

Related 関連記事

  1. 1

    2つのテーブルを結合してから、2つの異なる列を選択するにはどうすればよいですか?

  2. 2

    mysqlは、3つのテーブルから1つの異なる列を選択して結合します

  3. 3

    2つの異なるテーブルから2つの異なる列を選択します

  4. 4

    結合を使用して2つのテーブルから2つの列を選択します

  5. 5

    2つのテーブルを結合し、結果から選択する

  6. 6

    SQL:CASEを使用して、2つの異なるテーブルから特定の要素を選択します

  7. 7

    2つのテーブルから結合を使用してSQLを選択し、1つのjsonオブジェクトを取得する方法

  8. 8

    結合を共有しない2つの異なるテーブルから2つのIDの可能なすべての組み合わせを選択する方法

  9. 9

    2つの異なるテーブルから列を結合しようとしています

  10. 10

    2つのテーブルを結合し、両方のテーブルの共通の列を使用して特定の列を選択する方法

  11. 11

    左外部結合とon句を使用して、共通の列を持つ2つの異なるテーブルからデータを取得する

  12. 12

    nullを含む2つのテーブルからすべての結合行を選択する方法

  13. 13

    2つの異なるテーブルから特定の列の合計を取得して印刷する方法

  14. 14

    sql-複数のテーブルの結合から1つの異なる列のみを持つ複数の列を選択する方法

  15. 15

    2つの異なるテーブルからSQLを選択

  16. 16

    2つの異なるテーブルから2つの異なる列の合計を取得してグループ化する方法

  17. 17

    結合を使用して2つの異なるテーブルの2つの列を乗算しながら、行を複製します

  18. 18

    2つの異なるテーブルからの2つのクエリを結合する方法

  19. 19

    SQL。2つの異なるテーブルからすべてのシリアル番号を選択します

  20. 20

    選択した2つの列がテーブルの1つの列からのものであるが、条件が異なる場所を選択します

  21. 21

    2つの異なるデータベースから異なるテーブルを結合する方法は?

  22. 22

    SQLキーを使用して2つのテーブルを異なる列に結合します

  23. 23

    SQL2つの異なるテーブルから同じ列を選択します

  24. 24

    Mysql異なるテーブルの2つの列を選択します

  25. 25

    Mysqlを使用して異なる値で2つのテーブルを結合する方法

  26. 26

    結合しているテーブルの列から上位1つの値のみを選択しますか?

  27. 27

    PHPは、2つのテーブルから異なるデータを収集して結合します

  28. 28

    SQLは、列名が異なる2つの異なるテーブルから行を選択します

  29. 29

    内部結合を使用して、異なる名前の2つのテーブルを結合します

ホットタグ

アーカイブ