質問 > 管理機能 > 高度な設定のsqlついて |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ecbg |
投稿日時: 2009/10/26 15:01
対応状況: −−−
|
仙人 登録日: 2009/2/25 居住地: 東京 投稿: 387 |
高度な設定のsqlついて お世話になっております。
「管理画面」-「コンテンツ管理」-「高度な設定」において、例えば以下のように会員登録時に任意のプルダウンリストから登録して貰った値がdtb_customerのカラム「emp1」,「emp2」,「emp3」に格納してあり、それぞれ1〜80までの値が入っております(それぞれNULLも有ります)。 このときに、3つのカラムを跨いで、1〜80までの各値を選択した会員数を求めたいのですが、どのようなSQL文を作成したら良いのか悩んでおります。 どうかSQLにお強い方お力を貸してくれませんでしょうか? 【PostgreSQL 8.3.7】 |
seasoft |
投稿日時: 2009/10/26 15:42
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 高度な設定のsqlついて とりあえず、
- UNION - COUNT(*) - GROUP BY 辺りの構文を覚えると出来そうな予感。 高度な設定で UNION を使うには、サブクエリにする必要もあるかも(未確認)
|
ecbg |
投稿日時: 2009/10/26 17:47
対応状況: −−−
|
仙人 登録日: 2009/2/25 居住地: 東京 投稿: 387 |
Re: 高度な設定のsqlついて 以下の方法でdtb_customerから「emp1」のみを選択した会員数をCOUNTすることはできるのですが、「emp2」,「emp3」に対しても同様にCOUNTするために、どうサブクエリやUNIONを使うのか、完全に煮詰まってしまいました・・・
SELECT b.name as 項目名, count( a.customer_id ) as 会員数 FROM dtb_customer as a, mtb_emp1 as b WHERE a.emp1 = b.id AND a.del_flg = 0 GROUP BY a.emp1, b.name どうか打開できるアイデアをお持ちの方いらっしゃいましたら、お教え頂けないでしょうか? |
ramrun |
投稿日時: 2009/10/26 19:39
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: 高度な設定のsqlついて emp1〜emp3が未選択でnullならば、
emp1〜emp3すべてnullのcustomer_idを抽出すればどうにかなるのでは? 勘違いでしたらごめんなさい(汗)。 |
seasoft |
投稿日時: 2009/10/27 1:14
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 高度な設定のsqlついて TEL を使用した例です。
|
ecbg |
投稿日時: 2009/10/28 13:23
対応状況: −−−
|
仙人 登録日: 2009/2/25 居住地: 東京 投稿: 387 |
Re: 高度な設定のsqlついて 返信が遅くなり申し訳ありませんでした。
具体例まで記載頂き、本当に有難うございます! 上記で欲しかった「emp1」「emp2」「emp3」の値をカウントできております! 感動しました! FROM句内にUNION ALLを使うなど、 ひとりで悩んでいても到底思い浮かびませんでした。 しかしながら、SQL中の「a」や「*」がどのように使われているのか、未だに分りません・・・ こういったのを勉強するための参考ページなどご存知でしたら、 お教え頂ければ幸いです! |
ecbg |
投稿日時: 2009/10/28 13:48
対応状況: −−−
|
仙人 登録日: 2009/2/25 居住地: 東京 投稿: 387 |
Re: 高度な設定のsqlついて FROM句内をひとつひとつみることで要約理解できました!
「tel01」「tel02」「tel03」を含めてカウントするために、 まずそれぞれを抽出した3つ分のテーブル「a」を作成して、 「a」内で3つ全てが含まれた「tel_all」をグループ化した後、 COUNTすることで実現していたんですね! またSQLの理解が広がりました! 有難うございました。 |
seasoft |
投稿日時: 2009/10/28 14:40
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 高度な設定のsqlついて 個人的に、SQL 文で勉強になったのは、Oracle の公式マニュアルでした。
非常に無機質で無愛想ですが、理路整然としていて、結構好みです。 ただ、とっつきにくい印象も強いですが・・・ 単に全体をカウントするだけなら、サブクエリ内の「*, 」は不要ですね。ただし、抽出条件を付ける場合などには役立つのかなと思います。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |