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

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

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

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

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

5回答

1262閲覧

SQLで欲しいレコードの書き方がわかりません

JUNJUNJUN

総合スコア25

MySQL

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

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/08/17 08:38

oracle初心者です。
下記のテーブルから対象のidを取得するSQLがわかりません。
どなたかご教示いただけると助かります。

TABLE1 id(外部キー), group_id, element1_id TABLE2 group_id(外部キー), element2, element3
element_id = 1 かつ element_id = 2 かつ element_id = 3 を含む、element2='enything' かつ element3='nothing' の一覧(TABLE2.group_id)

よろしくお願い致します。

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

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

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

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

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

roast_chicken

2016/08/17 08:53

element_id = 1 かつ element_id = 2 かつ element_id = 3 というのは、データとして保持できるのでしょうか?(項目がなさそうなので) TABLE1とTABLE2をJOIN句で結合する方法 select t1.*,t2.* from TABLE1 as t1 , TABLE2 as t2 where t1.group_id = t2.group_id and t2.element2='enything' and t2.element3='nothing';
guest

回答5

0

SQL初学者にありがちかと思うのですが、
いきなり求める答えを得ようとするとから混乱しやすくなるのです。

考え方に慣れてくれば一気に書くのはありですが、
それまでは段階的にSQLを組み立てる習慣を付けることをおすすめします。

先ず前提としてそれぞれのテーブルで、
それぞれ条件を満たしたレコードの取得方法は分かりますか?

element_id = 1 かつ element_id = 2 かつ element_id = 3

を含む(element1_idのこと?)

ここまでならTABLE1のみの検索条件となりますが、
TABLE1単体で上記条件を満たすSQLを記載できますか?

element2='enything' かつ element3='nothing'

これだけならTABLE2のみの検索条件となりますが、
TABLE2単体で上記条件を満たすSQLを記載できますか?

上の2つがクリアできて始めて次のSTEPに進めるので、
先ずは上2つが質問者さん自身で行えるか確認して下さい。

上2つが出来る所まで理解できる所まできたら、

  • とあるキーを用いてでテーブル同士を結びつける
  • 取得したい列のみ選択(SELECT)する

後は上記2つを行うだけとなります。

投稿2016/08/17 10:15

Panzer_vor

総合スコア1636

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

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

0

element_idは一つの要素なので、「element_id = 1 かつ element_id = 2 かつ element_id = 3」の条件を満たす行はありえません。
予測ですが、「group_idでグループした際に、element_id = 1, element_id = 2, element_id = 3 の三つを最低限含むelement2='enything' かつ element3='nothing'の一覧」が要望しているものでは?
もし当りなら以下のSQLで取れるかもしれません。(動作確認無し)

SQL

1SELECT T2.group_id 2FROM TABLE2 T2 3INNER JOIN TABLE1 T1 ON T2.group_id = T1.group_id 4WHERE element2='enything' 5AND element3='nothing' 6GROUP BY T2.group_id 7HAVING SUM(CASE WHEN element_id = 1 THEN 1 ELSE 0 END) > 0 8AND SUM(CASE WHEN element_id = 2 THEN 1 ELSE 0 END) > 0 9AND SUM(CASE WHEN element_id = 3 THEN 1 ELSE 0 END) > 0

投稿2016/08/17 10:06

hirohiro

総合スコア2068

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

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

0

返って分かり難くなったかな(本当は図に描くと良い)

ER?

1 2<TABLE1> <TABLE2> 3 id(pk) +-----group_id(pk) 4 group_id(fk)<-----+ element2 5 element1_id element3 6 7 8SQL where条件 9<TABLE1> 10element1_id in (1,2,3) 11 12&<TABLE2> 13element2='enything' 14element3='nothing' 15 16JOIN条件 17 group_id

投稿2016/08/17 09:33

A.Ichi

総合スコア4070

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

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

JUNJUNJUN

2016/08/17 10:03

コメントありがとうございます。 とてもわかりやすかったですm(_ _)m
guest

0

element_id = 1 かつ element_id = 2 かつ element_id = 3

を含む、element2='enything' かつ element3='nothing'
の一覧(TABLE2.group_id)

TABLE1 の id と TABLE2 の group_id でテーブル結合する
TABLE1 の element1_id が 1 または 2 または 3
TABLE2 の element2 が 'enything' かつ element3 が 'nothing'
以上の条件に合致するTABLE2 の group_id を表示する

ということですかね?
とりあえず、わかるとこまでコード書いてもらえたら
アドバイスしようって人はいると思います。
がんばって書いてみましょう。

投稿2016/08/17 09:03

takasima20

総合スコア7458

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

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

JUNJUNJUN

2016/08/17 10:03

コメントありがとうございます。 こちらのSQLでほしい情報がGETできました。 とても助かりましたm(_ _)m
guest

0

ベストアンサー

sql

1SELECT 2 t2.group_id 3FROM 4 TABLE1 t1 5 INNER JOIN TABLE2 t2 6 ON t1.group_id = t2.group_id 7WHERE 8 t1.element_id = 1 9 AND t1.element_id = 2 10 AND t1.element_id = 3 11 AND t2.element2='enything' 12 AND t2.element3='nothing' 13;

投稿2016/08/17 09:02

root_jp

総合スコア4666

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

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

roast_chicken

2016/08/17 09:15

WHERE t1.element_id = 1 AND t1.element_id = 2 AND t1.element_id = 3 or であればわかるのですが、同じ項目名で取得できますか?
JUNJUNJUN

2016/08/17 10:03

コメントありがとうございます。 こちらのSQLでほしい情報がGETできました。 とても助かりましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問