質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

1141閲覧

【MYSQL】同じテーブル内で相互に取引があるかSQLで確認したい

te23

総合スコア3

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2020/05/26 08:06

前提・実現したいこと

MYSQLのデータベースで、下記の様な取引テーブルがあるのですが、
相互的に取引が行われている会社IDのみを抽出したいと考えております。

取引テーブル

id会社ID取引先ID
112
213
321
423
531
641

取得したい結果

会社ID=1の相互取引のみを抽出した場合、
下記のような結果が出る事を求めています。
※id 6の会社ID4は一方的な取引の為抽出しない。

id会社ID取引先ID
112
213

このようなSQLは初めて、どのようなSQLを打てばいいかも想像もついておりません。
教授いただければ幸いです。
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

exists使いましょう。
あとサンプルデータのインサート文くらいは欲しいですね。

sql

1 2CREATE TABLE 取引テーブル 3 (`id` int, `会社ID` int, `取引先ID` int) 4; 5 6INSERT INTO 取引テーブル 7 (`id` , `会社ID`, `取引先ID`) 8VALUES 9 (1, 1, 2), 10 (2, 1, 3), 11 (3, 2, 1), 12 (4, 2, 3), 13 (5, 3, 1), 14 (6, 4, 1), 15 (7, 1, 5) 16; 17 18select * 19from 取引テーブル as A 20where A.会社ID=1 21 and exists( 22 select 0 23 from 取引テーブル as B 24 where B.取引先ID=A.会社ID 25 and B.会社ID=A.取引先ID 26 ) 27

投稿2020/05/26 14:02

sousuke

総合スコア3830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

te23

2020/05/26 22:58

ありがとうございます!
guest

0

取引テーブルを自己参照してINNER JOINします。
基底の取引テーブルをtbl1、JOINする取引テーブルをtbl2とし、tbl1の取引先IDとtbl2の会社IDをJOINすると相手先の取引相手がtbl2.取引先IDでわかります。
これとtbl1.会社IDが一致すれば双方向に取引があることになります。

以上のことをSQLでそのまま表現するとこうなります。

sql

1select (略) 2 3from 取引テーブル as tbl1 4inner join 取引テーブル as tbl2 5 on tbl1.取引先ID = tbl2.会社ID 6where tbl1.会社ID = tbl2.取引先ID

自己参照はSQLのキホンのキです。しっかり覚えてください。

投稿2020/05/26 08:55

編集2020/05/26 08:55
hope_mucci

総合スコア4447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

te23

2020/05/26 22:58

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問