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

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

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

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

Q&A

解決済

2回答

426閲覧

SQL文の例文で分からない所がある

退会済みユーザー

退会済みユーザー

総合スコア0

SQL

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

0グッド

0クリップ

投稿2021/05/22 05:22

編集2021/05/22 05:23

このページの、「4.結合」の例文です

borrowings.returndate AS "Return Date"とありますが、books.returndate AS ~でないとWHERE句で絞り込まれてないテーブルのreturndateを検索することになるではないでしょうか?

ご教授お願い致します

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

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

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

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

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

guest

回答2

0

ベストアンサー

WHERE句で絞り込まれてないテーブルのreturndateを検索することになるではないでしょうか?

なりません。

JOINWHEREを組み合わせた場合、結果はJOINした巨大なテーブル全体WHEREを行ったのと同じ結果になります。「絞り込まれてないテーブル」なんてものが出現する余地はありません。

投稿2021/05/22 06:22

maisumakun

総合スコア146018

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

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

退会済みユーザー

退会済みユーザー

2021/05/22 06:31

すみません、`FROM a JOIN b`とした場合`b`という名前で結合されると勘違いしていました しかし、`a`、ここでいえば`borrowings`という名前で結合されるとすると、`WHERE句`で絞り込まれるのは`borrowings`ですよね? そこで`books.title AS 〜`とすると、絞り込まれていない`books`の作者全てが出力されるのではないでしょうか?
maisumakun

2021/05/22 06:33 編集

> `WHERE句`で絞り込まれるのは`borrowings`ですよね? 違います。「borrowingsとbooksをJOINした1枚のテーブル」に対するWHERE条件として動作します。なので、あとからbooksに属する列を取ってきたとしてもWHEREの絞り込みは適用されています。
maisumakun

2021/05/22 06:35

元のページにも「今回は”books”テーブルや”borrowings”テーブルではなく、この2つを結合した 新たなテーブル に対してクエリを実行します。」と明記してあります。
退会済みユーザー

退会済みユーザー

2021/05/22 06:46

なるほど… しかしそうなると、`SELECT文`で`books.`や`borrowing.`が使えるのはなぜでしょう? `title`や`returndate`だけではいけないのでしょうか?
maisumakun

2021/05/22 06:48 編集

> `title`や`returndate`だけではいけないのでしょうか? 片方のテーブルにしかない列であればそれでも構いません。両方のテーブルに同名の列がある場合に備えて、元のテーブル名を含めて指定できるようになっています。
退会済みユーザー

退会済みユーザー

2021/05/22 06:49

やっと理解出来ました…本当にありがとうございました
guest

0

・“books”のテーブルには本のタイトル著者出版年そして貸出可能冊数のデータがあります。とても分かりやすいデータです。
・“members”テーブルには登録メンバーの名字名前のみ載っています。
・“borrowings”テーブルには会員が借りた本の情報が載っています。 bookid 列は借りられた”books”テーブルの本のIDが、 memberid 列には本を借りた”members”テーブルの会員と対応するようになっています。また本の貸し出し日返却の予定日のデータもあります。

そもそも、booksにはreturndate(貸し出し日)はありません。

投稿2021/05/22 05:31

sazi

総合スコア25327

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

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

退会済みユーザー

退会済みユーザー

2021/05/22 05:35

すみません、JOIN句だと`books`という名前で`borrowings`と結合するのだと勘違いをしていました。 しかし、`borrowing`という名前で結合するのだとすると、`books.title AS 〜`という所で私が言ったような問題が起こるのではないでしょうか?
sazi

2021/05/22 05:42

selectにおいて、「WHERE句で絞り込まれてないテーブル」というのは表現が変です。 「WHERE句で絞り込まれるテーブル」ですから、「絞り込まれる」以外はselect結果に出力されません。 多分SQLと結果のイメージが定まっていないのではないでしょうか。
sazi

2021/05/22 05:54 編集

from句で指定されるのは表です。 Excelのシートで例えるなら、 結合(JOIN)すると、結合したテーブルの項目が横に追加されるイメージです。 ON句の項目指定で、追加した表を同じ項目で並びを揃えてくれる。 where条件は、その表をフィルターします。
退会済みユーザー

退会済みユーザー

2021/05/22 05:56

まだ分からないです… ここも勘違いしてるのかもしれないのですが、`FROM a JOIN b ON a.id = b.xid`の後に`b.name`と書くと呼び出されるのは結合も何もされていないただのテーブルbですよね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問