- 締切済み
汎用性があるSQL式を教えて欲しいです
chayamatiの回答
- chayamati
- ベストアンサー率41% (257/615)
こんにちは 3.フォーム作成(クエリとフォーム) クエリには(1)選択(2)クロス集計(3)テーブル作成(4)更新(5)追加(6)削除と ありますがフォームからクエリビルダで作成するのは(1)の選択クエリです。 ここではフォーム作成として記述します。 3.1.回答No.2の「入出庫登録」フォーム作成 (カテゴリID,名前IDは標題を空に、 右端のvはコンボボックスのプルダウン) 作成リボン→フォームデザイン→プロパティ―シート→データタグ →レコードソースの右端の…→T入出庫→追加→M名前→追加 →テーブルの表示を閉じる →M名前のカテゴリーIDをフィールドにドラッグ →T入出庫の*(ワイルドカード)をフィールドにドラッグ →日付をフィールドにドラッグ→並び替えを昇順に →表示行のチェックを外す。添付図をご覧ください →クエリビルダを閉じる→◎デザインリボン→既存のフィールドの追加 →回答No.2を参照してカテゴリID、名前ID、日付、入庫数、 出庫数を詳細画面にドラッグ→テキストボックス全て→◎配置リボン →◎表形式→◎スペースの調整▼→なし→◎サイズ/間隙▼→自動調整 →◎サイズ/間隙▼→広いコントロールに合わせる →空白箇所をクリックして→フォームヘッダ上の名前ボックスを 詳細バーまで移動→詳細内の名前を詳細バーまで移動 →フォームフッターを止まるまで上へ移動 →フォームフッターの空白部分を下端から上はドラッグして空白を消す →デザインリボン→ラベル→フォームヘッダの左上端 これでボックスの配置は完了ですが、フィールドの幅の調整が必要です。 ボックッスの一つの幅を変化させると周りのボックッス連動します この画面で印刷プレビューが使えます。 ファイル→印刷→印刷プレビュー →カテゴリ→プロパティのその他タグ→タブストップをいいえ →フォームフッターの下→プロパティの書式を帳票フォーム →フォームを閉じる→「変更を保存」にはい→フォーム名に 「入出庫登録」と入力→OK ・上記流れの中で◎印あるのはツールではなくツールの保存場所です。 頻繁に使うツールはクイックアクセスツールバーに 登録しておくと良いでしょう クイックアクセスツールバーの表示域が狭いですが、 下に表示するにすれば画面の横いっぱいに広がります。 プロパッティーのデータタグ内に追加の許可、削除の許可、 更新の許可がありますね、これで参照確認用、登録用と使い分けれます また、その他タブにヒント、タブストップ、タブ移動順、 縦書きがありますこれらも有効ですヒントはここに入力しておくと マウスカーソルを近づけるとツールと同じように表示されます。 次回はサブフォームのあるフォームの作成です。
関連するQ&A
- SQLの質問
※前質問は間違いました為、再度、質問させて頂きました。 以下のようにテーブルにレコードが登録されていたとします。 顧客テーブル(customer) 客No. 名前 1 鈴木 2 佐藤 3 高橋 4 田村 5 長谷川 登録テーブル(reserve) 客No. 日付 フラグ 1 2007-05-05 1 1 2007-05-06 2 2 2007-06-05 1 3 2007-05-30 1 5 2007-05-25 2 このとき、以下のような結果を表示させたいのですが どのようなクエリを作成すればよろしいのでしょうか。 客No. フラグが1であったレコード数 1 1 2 1 3 1 4 NULL 5 0 ※客No4は登録テーブルに存在しなかった為 NULLと表示させたいです。 何卒宜しくお願い致します。
- ベストアンサー
- MySQL
- SQLの条件検索について
下記のような「果物TBL」というテーブルがあるとします。 果物TBL -------------------------------- ID 名前 値段 - - - - - - - - - - - - - - - - - - - - 01 りんご 150 02 バナナ 250 03 みかん 250 04 ぶどう 300 -------------------------------- また上記のテーブルと全く同じ構成の「果物検索TBL」というテーブルがあるとします。 そのテーブルには、例として下記のような値を入れておきます。 果物検索TBL -------------------------------- ID 名前 値段 - - - - - - - - - - - - - - - - - - - - NULL りんご 250 NULL バナナ NULL -------------------------------- この時、下記のようなSQLだと SELECT DISTINCT 果物TBL.名前 FROM 果物TBL INNER JOIN 果物検索TBL ON (果物TBL.ID = 果物検索TBL.ID AND LEN(果物検索TBL.ID) > 0) OR (果物TBL.名前 = 果物検索TBL.名前 AND LEN(果物検索TBL.名前) > 0) OR (果物TBL.値段 = 果物検索TBL.値段 AND LEN(果物検索TBL.値段) > 0); -------------------------------- 名前 - - - - - - - - - - - - - - - - - - - - バナナ みかん りんご -------------------------------- という結果になります。(名前:りんご・バナナと値段:250のOR検索) その結果を -------------------------------- 名前 - - - - - - - - - - - - - - - - - - - - バナナ -------------------------------- という結果にするにはどうすればいいでしょうか?(名前:りんご・バナナと値段:250のAND検索、バナナのみマッチ) 単純にORをANDにしてもうまくいきませんでした。 動的にSQLを作れれば良いのですが、この構成は変えられないのでNULL値がネックになり分かりません。 教えてください。 また、記載してるSQLよりもっとスマートな書き方があれば教えてください。
- ベストアンサー
- その他(データベース)
- SQLでグループ化して降順表示がうまくいきません
個人的にMysql、php環境でサイトを作っております。 そこで、素人質問で申し訳ありませんが、SQLでお伺いしたい点があります。 例えば下のようなテーブルがあります。 ▽果物テーブル 果物ID | 果物名 | 売れた日付 1 | リンゴ | 2008/11/1 2 | みかん | 2008/11/2 3 | みかん | 2008/11/3 4 | リンゴ | 2008/11/4 これを、 『最近売れた』果物順に、『グループ化』して並べ替えたいと思い、 下記のようなsqlを組みました。 $sql = "SELECT 果物名, FROM 果物テーブル GROUP BY 果物名 ORDER BY 売れた日付 DESC"; 意図としてはリンゴ、みかんの順に並べ替えたいのですが、 みかん、リンゴの順に表示されてしまいます。 想像では、グループ化したとき、古い日付の方が残ってしまい、 | リンゴ | 2008/11/1 | みかん | 2008/11/2 この部分を対象にして日付を降順にしてしまうからだと思うのですが、 これをうまく解決する方法が分かりません。 MSアクセスなどですと先に二重にクエリをかけるなどすることで 「先に降順で並べ替えたクエリを出し、その後グループ化させる」 など処理が簡単なのですが、phpではどうするのかいまひとつ分からず・・・ 申し訳ありませんがよろしくお願いします。
- ベストアンサー
- PHP
- Excelでこのような集計はどうしたらいいですか?困ってます!
こんにちは。 以下のような集計を行いたいのですが、どうすればよいかわかりません。教えてください!! Sheet(1) A列、B列、C列 カテゴリ、数、品名 =================== 野菜、1、大根 野菜、2、ねぎ 果物、2、いちご 肉、3、牛肉 果物、1、りんご 肉、2、豚肉 ・ ・ ・ Sheet(2) A列、B列、 カテゴリ、金額 =================== 野菜、300 果物、300 肉、500 ・ ・ ・ 各品物は、100円均一とし、Sheet2でカテゴリ毎に必要な金額を求めます。Sheet1は、およそ1000行ほどあるので、一括で数式で求めたいのですが、どのような関数を使えばよいのかわかりません。 お願いします!
- ベストアンサー
- オフィス系ソフト
- カテゴリと個別商品の集計SQLについて
カテゴリと個別商品の集計SQLについて質問です。 postgresのバージョンは9.0です。 次のテーブルより ------------------------------------------ id カテゴリ 商品名 日付 値 ------------------------------------------ 1 野菜 ホウレン草 2010-01-01 100 2 野菜 ホウレン草 2010-01-02 100 3 野菜 ホウレン草 2010-02-02 100 4 野菜 キャベツ 2010-01-02 200 5 肉 牛肉 2010-01-01 500 6 肉 牛肉 2010-01-02 500 -------------------------------------------- 下の結果を得るSQLを考えています。 月毎の値の集計 カテゴリ 商品名 1月 2月 合計 カテゴリ合計 カテゴリ合計と合計との差 ----------------------------------------------------------------------------- 野菜 ホウレン草 200 100 300 500 200 野菜 キャベツ 200 0 200 500 300 肉 牛肉 1000 0 1000 1000 0 ----------------------------------------------------------------------------- ここでカテゴリの合計とは 上の場合、 ホウレン草(300)+キャベツ(200)=カテゴリ野菜(500)、です。 クロス集計とサブクエリを使えば出来そうなのですが、カテゴリ合計を出す部分の SQLが思いつきません、よろしくお願い致します。
- ベストアンサー
- PostgreSQL
- チェックボックスの値に応じてPHP内でSQLを発行する方法
HTML検索フォームにチェックボックスを複数設け、チェックが入ったら チェックされているもの同士をORで結んだものを、他の検索キーとANDで結ぶ SQL文を発行したいのですが。 これを効率的に行う方法を、以前に本掲示板でご教示いただきました。 <input type="checkbox" name="food[]" value="1">果物 <input type="checkbox" name="food[]" value="2">野菜 <input type="checkbox" name="food[]" value="3">肉類 if(is_array($_POST['food'])) { $sql .= " AND ("; $i=0; # 「or」 をつけるフラグ foreach($_POST['food'] AS $food_code) { if ($i) { $sql .= " OR "; } $sql .= "MYTABLE.MYFOOD = '$food_code'"; $i++; } $sql .=")"; } これを応用し、MySQLのMYTABLE.MYFOODに次のようなレコードが登録されているとして、 果物―みかん 野菜〔にんじん〕 野菜(キャベツ) 肉類【豚バラ】 果物~りんご : これら先頭2文字を切り出して(あるいは「LIKE '肉類%'」のように、~で始まる、 でもいいです)真偽を評価したいです。 その際、果物と肉類にチェックが入ったと仮定して AND (SUBSTRING(MYTABLE.MYFOOD,1,4) = '果物' OR SUBSTRING(MYTABLE.MYFOOD,1,4) = '肉類') としてみたら、合致するものだけをうまく抽出できたのですが、 このようなロジックを冒頭のPHPコードに組み込むにはどう書いたらいいでしょうか? なお、果物5種類、野菜3種類、肉類7種類と、いずれも有限ですので、 SQL文をベタ書きすることは十分可能だと思っています。
- ベストアンサー
- PHP
- エクセル グループごとの検索について
グループごとを検索し、その情報を縦列に表示したいのですが、悩んでおります。 横に表示するのは、以下の関数を使って出来たのですが、 =IF(ISNA(MATCH(COLUMN(A4)&$A4,sheet1!$E$2:$E$700,0)) これだと使い勝手が悪く、困っております。 例えば (sheet1)の情報を、 品種 品名 金額 産地 果物 りんご1 200 津軽 果物1 果物 りんご2 250 むつ 果物2 果物 みかん 300 果物3 果物 ぶどう 400 果物4 ーーーーーーーーーーーーーーーーーーーーーーーー 海外果物 パパイヤ 300 海外果物1 海外果物 アドカボ 100 海外果物2 海外果物 バナナ 130 海外果物3 ーーーーーーーーーーーーーーーーーーーーーーーー 野菜 なす 100 野菜1 野菜 にんじん 200 野菜2 野菜 きゃべつ 300 野菜3 野菜 大根 150 練馬 野菜4 野菜 大根2 180 京都 野菜5 (sheet2)において [A]又は[B]のある位置のセルに、品種(この場合、野菜)を打ち込むと、 [ A ] [ B ]なす 100 にんじん 200 きゃべつ 300 大根 150 練馬 大根2 180 京都 このように、品名と値段、産地が縦に並んで欲しいのです。 どうぞお知恵を貸して下さいませ。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- <li>内の<ul>を横に表示する方法
<li>内の<ul>を横に表示する方法がわからずに困っています。 例えば <ul> <li>野菜 <ul> <li>大根 <li>にんじん </ul> </li> <li>果物 <ul> <li>りんご <li>バナナ </ul> </li> </ul> これを以下のように表示させたいのです。 ・野菜 ・大根 ・にんじん ・くだもの ・りんご ・ばなな この場合、CSSはどのように記載すればいいのでしょうか。 ご存知の方、ご教授頂けると幸いです。
- ベストアンサー
- HTML
- Excelでの全通りの組み合わせ出力方法2
こんにちは。 http://okwave.jp/qa/q4122783.html にあった質問より、もう少し複雑な組み合わせを出力したいと思っています。 例えば 【肉類】として 牛肉 豚肉 鶏肉 魚肉 の中から2つ選び 【根菜】として 大根 にんじん たまねぎ サツマイモ の中から2つ選び 【葉野菜】として キャベツ 白菜 キャベツ レタス ほうれん草 の中から2つ選ぶ、 といった場合の全ての組み合わせを 【肉類】【根菜】【葉野菜】の列、または 【肉類1】【肉類2】【根菜1】【根菜2】【葉野菜1】【葉野菜2】の列に出力する事は出来るものでしょうか? 組み合わせ例としては、 牛肉、魚肉、大根、たまねぎ、レタス、ほうれん草 のような感じです。 実際に使用したい選択肢の総数が100個ほどあり、手入力には多すぎるので なんとかExcelで出来たらと思ってるのですが……。 ご存知の方がいらっしゃいましたらご教授下さい!
- ベストアンサー
- オフィス系ソフト
- 複数キーが存在する場合のIN演算子
閲覧ありがとうございます。 「IN演算子、複合キー」 等で検索を行いましたが、知りたい情報を見つけ切れなかったので投稿させていただきました。 SQLserver2005でのWhere句の書き方について悩んでます。 以下のテーブルからのデータを取得する方法、ご解答いただければ幸甚です。 食べ物テーブル 名前|品種|ID|ジャンル| ------------------------ りんご|品種1|001|果物| りんご|品種2|002|果物| ごぼう|品種1|003|野菜| ごぼう|品種2|004|野菜| IDはユニークとなっていて、 主キーは「名前」と「品種」で複合キーになっているとします。 クエリで、特定の1行を複数同時に取得したいと考えてます。 ◆IDを条件とする場合 IN演算子を使う where IN('001','002','004') と指定 期待値: りんご|品種1|001|果物| りんご|品種2|002|果物| ごぼう|品種2|004|野菜| 検索結果: りんご|品種1|001|果物| りんご|品種2|002|果物| ごぼう|品種2|004|野菜| ◆「名前」「品種」を指定する場合 IN演算子を使う where IN('りんご',ごぼう) and IN('品種1','品種2') 期待値: りんご|品種1|001|果物| りんご|品種2|002|果物| ごぼう|品種2|004|野菜| 検索結果: りんご|品種1|001|果物| りんご|品種2|002|果物| ごぼう|品種1|003|野菜| ごぼう|品種2|004|野菜| 当然といえば当然なのですが、 期待値の通りに取得するには以下のように記述するしかないのでしょうか。 Where (名前 = 'りんご' and 品種 = '品種1') or (名前 = 'りんご' and 品種 = '品種2') or (名前 = 'ごぼう' and 品種 = '品種2') . . . . 取得したい行が増えれば増えるほど 記述が億劫になってきました。。。 ほかにいいクエリの記述方法があれば教えてください。 Oracleであれば、良い具合に 複合キーの同時指定をできると聞いたのですが、SQLserverには存在しないのでしょうか? よろしくお願い致します。
- ベストアンサー
- SQL Server