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

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

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

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

Q&A

解決済

1回答

1629閲覧

CD貸出管理表を作成しています。複数貸出者がいる際には貸出者を複数と表示したいです。

0516bz

総合スコア13

SQL

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

0グッド

0クリップ

投稿2019/07/21 08:58

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)CD貸出管理表を作成しています。複数貸出者がいる際には貸出者を複数と表示したいです。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

タイトルが被っているものが重複して表示されてしまう。
貸出者が複数と表示されない。

エラーメッセージ

該当のソースコード

SQL

1ソースコード

select
タイトル
,種別
,場所
,貸出者
,返却予定日
from
CD管理
join
種別
on
CD管理.CD種別 = 種別.CD種別
join
貸出返却管理
on
CD管理.管理番号 = 貸出返却管理.管理番号
group by
タイトル
,種別
,場所
,貸出者
,返却予定日
having
COUNT(貸出返却管理.貸出者) >= 2

試したこと

上記のSQLを試しました。
結果として

タイトル 種別 場所 貸出者 返却予定日
A    ロック A5 山田  2019−06−07
B    JPOP F7  石井  2019−09−09
B    JPOP F7  大國  2020-08–07
C    演歌 J6  山師  2019-04-24

なってほしい結果は以下です
タイトル 種別 場所 貸出者 返却予定日
A    ロック A5 山田  2019−06−07
B    JPOP F7  複数  −
C    演歌 J6  山師  2019-04-24

補足情報(FW/ツールのバージョンなど)

1つのタイトルで貸出者が複数人いる場合に
貸出者を「複数」,貸出返却日を「~」と
表示したいです。
case文も試したのですが上手くいきませんでした。
記入したSQLは現段階で動くSQLを記入しました。

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

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

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

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

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

sazi

2019/07/21 12:00

CD管理のタイトルが一意なら、質問のSQLの having COUNT(貸出返却管理.貸出者) >= 2 の条件の場合、結果は何も返却されないと思うのですが?
guest

回答1

0

ベストアンサー

DBMS何使ってるのかわかりませんが

DIFF

1select 2タイトル 3,種別 4,場所 5-,貸出者 6-,返却予定日 7+, CASE WHEN COUNT(*) = 0 THEN MAX(貸出返却管理.貸出者) ELSE '複数' END AS 貸出者 8+, CASE WHEN COUNT(*) = 0 THEN MAX(貸出返却管理.返却予定日) ELSE '−' END AS 返却予定日 9from 10CD管理 11join 12種別 13on 14CD管理.CD種別 = 種別.CD種別 15join 16貸出返却管理 17on 18CD管理.管理番号 = 貸出返却管理.管理番号 19group by 20タイトル 21,種別 22,場所 23-,貸出者 24-,返却予定日 25-having 26-COUNT(貸出返却管理.貸出者) >= 2

こんな感じでしょうか。

投稿2019/07/21 09:10

gentaro

総合スコア8949

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

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

0516bz

2019/07/21 09:25

回答ありがとうございます。 ポスグレを使っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問