同じテーブルの2つを別のテーブルに結合し、同じ行の(同じ)テーブルの情報を出力します

エステバン・ロドリゲス

悪い/長いタイトルで申し訳ありませんが、他にそれを置く方法がわかりません。

私がやりたいのは、「A」テーブルに結合し、それを「B」テーブルに結合することです。ここで、両方の「A」は共通の外部キーを持ち、次のような重複を防ぎながら、同じ行に両方の「A」テーブルからの情報を表示します。写真の例:

ここに画像の説明を入力してください

クエリがその仕事をしていることは知っていますが、出力前に行を比較することで「重複」を防ぐ方法はありますか?

これが私が試したことです。パフォーマンス的には悪いかもしれませんし、もっと良い方法があるかもしれませんが、これはパフォーマンスがそれほど重要ではない小さなDBのミニプロジェクト用です。

SELECT w.emp_id AS emp1_id, w2.emp_id AS emp2_id, 
    e.fname || ' ' || e.lname AS emp1_name, e1.fname || ' ' || e1.lname AS emp2_name,
    e.jobtitle AS emp1_jobtitle, e1.jobtitle AS emp2_jobtitle, e2.fname || ' ' || e2.lname AS cs_name
FROM work_on w 
    LEFT JOIN work_on w2 
        on w.emp_id != w2.emp_id and w.ticket_id = w2.ticket_id 
    LEFT JOIN employee e
        on w.emp_id = e.emp_id
    LEFT JOIN employee e1
        on w2.emp_id = e1.emp_id
    LEFT JOIN ticket t 
        on t.ticket_id = w.ticket_id
    LEFT JOIN customer_problem p 
        on p.problem_id = t.problem_id
    LEFT JOIN employee e2
        on e2.emp_id = p.emp_id
WHERE e2.emp_id = 20 and p.submit_date >= '2018-04-08' 
    and p.submit_date <= '2018-04-11' and e1.emp_id != e.emp_id
ORDER BY w.emp_id;

私のテーブル:

Employee: | Work_On:   | Ticket:      | Problem
----------+------------+--------------+------------
emp_id      work_id      ticket_id      problem_id
fname       emp_id       problem_id     emp_id
lname       ticket_id

この場合、私は2人の結合しようとしている従業員Work_On彼らが持っているチケットを経由して、チケットに接続する共通の、別の従業員問題のテーブルを。

Tim Biegeleisen

最小/最大を使用する1つのオプションは次のとおりです。

SELECT DISTINCT
    LEAST(w.emp_id, w2.emp_id) AS emp1_id,
    GREATEST(w.emp_id, w2.emp_id) AS emp2_id,
    LEAST(e.fname || ' ' || e.lname, e1.fname || ' ' || e1.lname) AS emp1_name,
    GREATEST(e.fname || ' ' || e.lname, e1.fname || ' ' || e1.lname) AS emp2_name,
    LEAST(e.jobtitle, e1.jobtitle) AS emp1_jobtitle,
    GREATEST(e.jobtitle, e1.jobtitle) AS emp2_jobtitle,
    e2.fname || ' ' || e2.lname AS cs_name
FROM work_on w 
LEFT JOIN work_on w2 
    ON w.emp_id != w2.emp_id AND w.ticket_id = w2.ticket_id 
LEFT JOIN employee e
    ON w.emp_id = e.emp_id
LEFT JOIN employee e1
    ON w2.emp_id = e1.emp_id
LEFT JOIN ticket t 
    ON t.ticket_id = w.ticket_id
LEFT JOIN customer_problem p 
    ON p.problem_id = t.problem_id
LEFT JOIN employee e2
    ON e2.emp_id = p.emp_id
WHERE
    e2.emp_id = 20 AND
    p.submit_date >= '2018-04-08' AND
    p.submit_date <= '2018-04-11' AND
    e1.emp_id != e.emp_id
ORDER BY w.emp_id;

最小/最大のトリックが機能する理由を確認するには、次の2つのレコード/列を検討してください。

emp1_id | emp2_id
2       | 15
15      | 2

これらのレコードは現在は区別されていますが、代わりに最小のIDを選択し、次に最大のIDを選択すると、同じように見えることは明らかです。

LEAST(emp_id1, emp_id2) | GREATEST(emp_id1, emp_id2)
2                       | 15
2                       | 15

次に、を使用SELECT DISTINCTすると、2つの重複する行の1つが削除されます。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

別のテーブルの同じものを指す同じテーブルの2つの行を結合します

分類Dev

同じクエリで異なる情報を持つ2つのMySQLテーブルを結合します

分類Dev

同じテーブルの複数の行を1つに結合します

分類Dev

同じ複合キーで2つのテーブルを結合します

分類Dev

SQL-同じテーブルの2つのフィールドを別のテーブルの1つのフィールドに結合します

分類Dev

同じIDと日付の2つのテーブルを結合します

分類Dev

MySQL同じテーブルの2つのクエリを結合します

分類Dev

2つのテーブルを結合し、2つの異なる行に同じ値のテーブルを生成します

分類Dev

mysqlは3つのテーブル、同じテーブルを2回結合します

分類Dev

MySqlはテーブルを結合し、他の2つの列が同じ場合に列を追加します

分類Dev

SQL Serverの同じテーブルを使用して、2つの異なる行を1つのテーブルに結合します

分類Dev

SQL、同じテーブルの 2 つの集計を結合

分類Dev

結合されたテーブルにまったく同じ情報がなくても、2つのテーブルを接続する際に支援が必要

分類Dev

複数のテーブルを結合し、テーブルの行を同じテーブルの値を持つ列として表示します

分類Dev

同じテーブルの異なるIDで2つの行を結合します

分類Dev

2つのテーブルが同じテーブルを参照する場合に選択します

分類Dev

Oracle SQL:同じテーブルを結合して目的の出力を取得する

分類Dev

同じテーブルの2つのフィールドをパラメータで結合します

分類Dev

同じテーブルの2つのSQLステートメントを結合します

分類Dev

2つの別々のテーブルに同じ量の行を強制します

分類Dev

同じフィールド名を持つ2つのテーブルを結合します

分類Dev

同じテーブルとフィルターの2つのSQL選択クエリを結合します

分類Dev

列名が異なり、行が同じ2つのテーブルを結合します

分類Dev

Oracle Triggerは、同じテーブル内の別の列からの情報で列を更新します

分類Dev

複数の列すべてを別のテーブルの同じ列に結合します

分類Dev

PostgreSQLの同じテーブルに対して行われた2つの同様のクエリを結合します

分類Dev

同じタイトルで異なるテーブルの2つの列を結合します

分類Dev

WHEREを使用した同じテーブルでのMySQL結合

分類Dev

2つの列を同じテーブルに結合する方法

Related 関連記事

  1. 1

    別のテーブルの同じものを指す同じテーブルの2つの行を結合します

  2. 2

    同じクエリで異なる情報を持つ2つのMySQLテーブルを結合します

  3. 3

    同じテーブルの複数の行を1つに結合します

  4. 4

    同じ複合キーで2つのテーブルを結合します

  5. 5

    SQL-同じテーブルの2つのフィールドを別のテーブルの1つのフィールドに結合します

  6. 6

    同じIDと日付の2つのテーブルを結合します

  7. 7

    MySQL同じテーブルの2つのクエリを結合します

  8. 8

    2つのテーブルを結合し、2つの異なる行に同じ値のテーブルを生成します

  9. 9

    mysqlは3つのテーブル、同じテーブルを2回結合します

  10. 10

    MySqlはテーブルを結合し、他の2つの列が同じ場合に列を追加します

  11. 11

    SQL Serverの同じテーブルを使用して、2つの異なる行を1つのテーブルに結合します

  12. 12

    SQL、同じテーブルの 2 つの集計を結合

  13. 13

    結合されたテーブルにまったく同じ情報がなくても、2つのテーブルを接続する際に支援が必要

  14. 14

    複数のテーブルを結合し、テーブルの行を同じテーブルの値を持つ列として表示します

  15. 15

    同じテーブルの異なるIDで2つの行を結合します

  16. 16

    2つのテーブルが同じテーブルを参照する場合に選択します

  17. 17

    Oracle SQL:同じテーブルを結合して目的の出力を取得する

  18. 18

    同じテーブルの2つのフィールドをパラメータで結合します

  19. 19

    同じテーブルの2つのSQLステートメントを結合します

  20. 20

    2つの別々のテーブルに同じ量の行を強制します

  21. 21

    同じフィールド名を持つ2つのテーブルを結合します

  22. 22

    同じテーブルとフィルターの2つのSQL選択クエリを結合します

  23. 23

    列名が異なり、行が同じ2つのテーブルを結合します

  24. 24

    Oracle Triggerは、同じテーブル内の別の列からの情報で列を更新します

  25. 25

    複数の列すべてを別のテーブルの同じ列に結合します

  26. 26

    PostgreSQLの同じテーブルに対して行われた2つの同様のクエリを結合します

  27. 27

    同じタイトルで異なるテーブルの2つの列を結合します

  28. 28

    WHEREを使用した同じテーブルでのMySQL結合

  29. 29

    2つの列を同じテーブルに結合する方法

ホットタグ

アーカイブ