データベース

全21673件中101~120件表示
  • 文字化けの解決方法

    Oracle12cR2のデータベースを構築中なのですが、あるSQLを実行したときだけSPOOLしたファイルの日本語が文字化けしてしまいます。 コマンドプロンプト上では日本語表示されているのですが、出力されたファイルのみに起こっているように見られます。 前後に実行しているSQLはコマンドプロンプト、SPOOLファイルともに日本語表示になっています。 SQLの実行結果自体に問題はないと思うので実害はないのだと思うのですが、エビデンスとしては直しておきたいところです。 どのような設定を確認すればよいでしょうか? SQLは以下の順で実行しています(添付ファイルの番号順) 1.DBFファイルを作成し、ALTERコマンドを実行(該当SQLの前に実行しているSQL) 2.実行SQLをまとめたSQLを実行(該当SQL) よろしくお願いします。

  • Access2019でMySQLデータ更新で障害

    初めてご質問します。 Access2019でMySQL(5.7.24)にODBC接続し、直接テーブルを更新したり、フォームからデータ挿入しようとすると、参照も更新もできるのですが、頻繁にAccessが強制終了してしまいます。 環境は以下の通りです。  OS:WindowsServer2016  Access:2019  MySQL:5.7.24  その他:Access、MySQLとも同じサーバー上にインストール  ODBCドライバー:mysql-connector-odbc-8.0.27-win32   MySQLは初の設定のため、ネットなどを参考にインストール、ODBCも無事に接続でき、Access上で作成していたデータを投入して、フォームからのデータ登録を試したところ、頻繁にエラーが発生してAccessが落ちてしまいます。 不思議に思い、AccessよりODBCでリンクを張っているテーブルを参照し、ごみデータの削除をすると同様にAccessが落ちることから、AccessとMySQLDBとの通信等等の障害と感じています。 OSのイベントビューワーでも、Applicationのエラーに複数のエラーが確認できました。 ・障害が発生しているアプリケーション名: MSACCESS.EXE、 ・Aborted connection 4 to db: ・障害バケット 1366483222980313419~ 当初はmysql_upgradeが発生していたので実行しました。 こちらを完了したところmysql_upgradeは表示されなくなりました。 同様にAccess2019も更新し、最新になっています。 AccessからODBC接続をさせ、安定して稼働させるには、どのようにしたらよいか、お知恵をお貸しいただけないでしょうか。

    • ベストアンサー
    • sasas
    • MySQL
    • 回答数2
  • Oracleのupdate文について

    OracleでテーブルB、Cを結合し取得できた項目で、テーブルAを更新したいのですがSQLがわかりません。結合結果とテーブルAは1:1にはなりません。 件数が結合結果>テーブルAの時もあれば、その逆の場合もあります。また、複数項目を更新したいです。実行して考えてみたいのですが、明朝客先ですぐに実行しなければならず(テスト環境はあるので明日そこで一旦確認後、すぐに本番環境で実行)、現在移動中→ホテル泊のため余裕がありません。 ネットで下記を見つけたのですが、更新する項目に更新日時を追加したいのと、テーブルAとの紐付けやEXISTSのWHEREはテーブルBとC両方の項目に紐づけたいです。 また、テーブルAの更新条件に、テーブルB、Cにはないcolumn③に対する条件も追加したいです。 UPDATE [TABLE①] A SET (COLUMN①, COLUMN②) = ( SELECT B.COLUMN, C.COLUMN FROM [TABLE②] B, [TABLE③] C WHERE B.COLUMN = C.COLUMN AND B.COLUMN = A.COLUMN ) WHERE EXISTS ( SELECT 1 FROM [TABLE②] B2 WHERE B2.COLUMN = A.COLUMN) もろもろとわかりづらい説明&他力本願で心苦しいのですが、どなたか教えていただけないでしょうか?

  • 測定結果が決められた範囲内か判定するSQL文

    決められた範囲内に測定結果が入っているかを判定するSQL文(またはストアドプロシージャ)を PostgreSQL 14.0を使って作ろうとしていますが、正しい結果が得られません。 具体的には、ケーブル・テーブルとスペック・テーブルで一致するテスト項目同士(例えば、'Test_1'同士)だけを比較したいのですが、他のテスト項目も引っ掛けてしまいます。 あと、下記のwhere test_item = 'Test_1', 'Test_2', 'Test_3'の部分を select test_item from cable; から一つ一つ取り出してループで回して代入し、最終的には id | test_item | test ----+-----------+------ 1 | Test_1 | 1.5 2 | Test_1 | 1.8 2 | Test_2 | 2.5 という、まとまった出力を得たいのですが、その方法を教えていただけないでしょうか? 自作のテーブルとSQL文は以下になります: create table cable( id integer default 0 not null ,test_item varchar(30) not null ,test numeric(3, 1) ,primary key (id, test_item) ); insert into cable values(1, 'Test_1', 1.5); insert into cable values(1, 'Test_2', 4.5); insert into cable values(1, 'Test_3', 2.5); insert into cable values(2, 'Test_1', 1.8); insert into cable values(2, 'Test_2', 2.5); insert into cable values(3, 'Test_3', 2.5); create table spec( test_item varchar(30) not null , lower_spec numeric(3, 1) , upper_spec numeric(3, 1) , primary key(test_item) ); insert into spec values('Test_1', 1.0, 2.0); insert into spec values('Test_2', 2.0, 3.0); insert into spec values('Test_3', 3.0, 4.0); postgres=# select * from cable c WHERE c.test_item = test_item and test < (select upper_spec from spec where test_item = 'Test_1') and test > (select lower_spec from spec where test_item = 'Test_1'); id | test_item | test ----+-----------+------ 1 | Test_1 | 1.5 2 | Test_1 | 1.8 (2 行) postgres=# select * from cable c WHERE c.test_item = test_item and test < (select upper_spec from spec where test_item = 'Test_2') and test > (select lower_spec from spec where test_item = 'Test_2'); id | test_item | test ----+-----------+------ 1 | Test_3 | 2.5 ←'Test_3'なので引っ掛けたくない 2 | Test_2 | 2.5 3 | Test_3 | 2.5 ←'Test_3'なので引っ掛けたくない (3 行) postgres=# select * from cable c WHERE c.test_item = test_item and test < (select upper_spec from spec where test_item = 'Test_3') and test > (select lower_spec from spec where test_item = 'Test_3'); id | test_item | test ----+-----------+------ (0 行) 必要であれば補足します。 では、よろしくお願いします。

  • 新規にデータベースを作成するものですか

    今回初めて、PostgreSQLを使ったシステム開発をする事となりました。先週から少し触り始めて多少わかってきたつもりですが、以下の点判断できず迷っています。アドバイスお願いしたいです。 デフォルトで存在する「postgres」データベースをそのまま使っていいものでしょうか?それとも、別データベースを作成したほうが良いものなのでしょうか。 デフォルトで存在するDBはサンドボックス的な意味合いで、実際には別途作成すべきものなのではないかと勝手に予想し、新規にユーザ作成した後、新規DBの作成が良いのではとも思っていたのですが、同僚から、「なんでデフォルトのものではだめなの?」と問われ返答に困ってしまいました。みなさんご意見お聞かせください。

  • データベース:主キーが文字列の場合IDを振るべき?

    テーブルの主キーが文字列の場合、 その主キーの文字列を通し番号に置き換えて、 その文字列は別テーブルに移したほうが検索が速いですか? 例えば、テーブルが CREATE TABLE spec ( test_name VARCHAR(40) NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_name) ); で、40文字という長いテスト項目名の場合、 CREATE TABLE spec ( test_id INTEGER NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_id) ); と CREATE TABLE test ( test_id INTEGER NOT NULL, test_name VARCHAR(40) NOT NULL, PRIMARY KEY(test_id) ); という二つのテーブルに分けたほうが検索は速くなりますか? (もちろん、結合する時間も含めてです。) もし速くなるとしても、文字数が3文字など少ない場合は 通し番号に置き換えてもきっと効果は薄いですよね? 何文字以上の文字列なら通し番号に置き換えたほうが速いですか? 皆さんはどのように決めていますか?

  • データベース:二つのテーブルの繋ぎ方

    私(あなた)が検査担当者だとします。 そして、測定担当者から CREATE TABLE measurement ( lot VARCHAR(10) NOT NULL, test_id INTEGER NOT NULL, data NUMERIC(17,7), PRIMARY KEY(lot, test_id) ); という、あるロットでのテスト番号に対する測定値データが送られてきたとします。 そして、設計担当者から CREATE TABLE spec ( test_name VARCHAR(10) NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_name) ); という、テスト項目名に対する上限・下限の仕様データが送られてきたとします。 ここで、テスト番号とテスト項目名は同じ数だけあって、お互いが一致するように同じ順番で並んでいるとします。 この二つのテーブルを使って、測定値が範囲内か範囲外かを調べるのが目的です。 この場合、どうやって二つのテーブルを繋ぐのが一般的ですか? 自分の考えだと、一旦、specテーブルにtest_idを加えて CREATE TABLE spec ( test_id INTEGER NOT NULL, test_name VARCHAR(10) NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_id, test_name) ); とするのですが、第二(第三?)正規化に基づいて CREATE TABLE spec ( test_id INTEGER NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_id) ); と CREATE TABLE test ( test_id INTEGER NOT NULL, test_name VARCHAR(10), PRIMARY KEY(test_id) ); の二つに分けるのかな、と思っています。 正規化の観点から言うと、きっとこれが正しいのかなと思っています。 でも、元々、specテーブルにはテスト項目名が入っていたのでテスト項目名と上限・下限が一目で分かっていたのに、このように分けると、いちいちspecテーブルでテスト番号を確認してから、testテーブルでそのテスト番号に該当するテスト項目名を見つけなくてはならなくなってしまいます。クエリーでの検索もJOINをしなければならなくなって遅くなりませんか? 敢えて正規化しないでおく、なんて手段もありますか? こんな場合、皆さんならどうしますか? 「こうするように決められている」なのか、 「ああもできるし、こうもできるんですが、どっちでもいいですよ」なのか、 温度差みたいなものもできれば知りたいです。

  • プログラミングの複合代入演算子と複合演算子は何が違

    プログラミングの複合代入演算子と複合演算子は何が違うんでしょうか?

  • データベースで列の項目数が1,000列を超える場合

    Oracleデータベースで列の項目数が1,000列を超える場合、一般的にはどうすればよいのですか? ある電子機器のテスト結果をデータベースに記録しようとしています。 一つのロットには、測定する端子が2,000個あります。 その各端子を1ミリ秒毎に5秒間測定しているので、1端子につき5,000個のデータが取れます。 ですから、端子数2,000個×測定データ数5,000個=1,000万個のデータが一つのロットから取れることになります。 表計算ソフトで愚直に表を作れば、以下のようになります: ロット名, 端子名, データ_0ms, データ_1ms, データ_2ms, ・・・, データ_4999ms Lot_A, Terminal_0001, 0.0, 0, 11, 0,23, ..., 4.98 Lot_A, Terminal_0002, 0.4, 0, 33, 0,43, ..., 5.07 Lot_A, Terminal_0003, 0.2, 0, 28, 0,36, ..., 5.02        : Lot_A, Terminal_2000, 0.8, 0, 16, 0,32, ..., 4.95 ただ、これをOracleデータベースに移そうとしたら、1,000列以上は作れないとエラーが出ました: ORA-01792 2 表またはビューに指定できる最大列数は1000 です。 原因: 1001 列以上ある表またはビューを作成しようとしたか、列を追加しすぎたため許容できる最大の列数1000 を超えました。表にある未使用の列も最大列数1000 に含まれることに注意してください。 対処法を検索すると、「列数が1,000個を超えるなんて設計がおかしい」「正規化してないのが悪い」など説教ばかりで、具体的な対処法が書かれたものが見つかりません。 私としては、5秒間(5,000個)のサンプリングでは足りなくて、本当は20秒間(20,000個)ぐらい欲しい気持ちです。 一つ考えたのが、以下のように、列でデータを持つのではなく、行で持つようにして、端子毎にテーブルを作ることです: 端子1テーブル ロット名, 端子名, データ Lot_A, Terminal_0001, 0.00 Lot_A, Terminal_0001, 0.11 Lot_A, Terminal_0001, 0.23        : Lot_A, Terminal_0001, 4.98 端子2テーブル ロット名, 端子名, データ Lot_A, Terminal_0002, 0.02 Lot_A, Terminal_0002, 0.40 Lot_A, Terminal_0002, 0.33        : Lot_A, Terminal_0002, 5.07 しかし、これでは各ロット毎に端子テーブルが2,000個必要になります。 端子同士の比較となると、2,000個のJOINが必要になりますよね。 これが一般的な対処法なのでしょうか? ということで、「私ならこうする」といった、具体的な対処法を教えて下さい。 Oracle以外のデータベースの例でも構いません。

  • RDBのデータ構造について

    RDBに関する質問です。以下のURLのページを見てRDBを使用した場合、 どういうデータ構造になっていますか?(テーブル・ リレーション関係) https://goosa.net/item/GS1900660/top 自分は以下のような構造になっていると考えましたが、合っていますか? ・user table(ユーザーテーブル) id user_name tel phone ・product table(商品テーブル)  product_id  product_name  price  img ・user_favorite table(お気に入りテーブル)  id  user_id = user.id(1対1)  product_name  product_id

  • SQLのSELECT文について

    以下の注文テーブルで、注文件数と送料と注文合計金額を一度に取得する場合、以下のようなSQL文で合っていますか? "SELECT order.total, order.delivery_fee, SUM(order.total * order.tax) AS total_for_paying FROM order"; CREATE TABLE `order` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `status` tinyint(3) UNSIGNED NOT NULL DEFAULT '0', `order_payment_status` tinyint(3) UNSIGNED NOT NULL DEFAULT '0', `buyer_id` bigint(20) UNSIGNED NOT NULL, `discount` INT(11) UNSIGNED NOT NULL, `delivery_fee` INT(11) UNSIGNED NOT NULL, `charge` INT(11) UNSIGNED NOT NULL, `total` INT(11) UNSIGNED NOT NULL, `tax` INT(11) UNSIGNED NOT NULL, `total_with_tax` INT(11) UNSIGNED NOT NULL, `total_for_paying` INT(11) UNSIGNED NOT NULL, `use_point` INT(11) UNSIGNED NOT NULL, `created` DATETIME NOT NULL, `updated` DATETIME NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

    • ベストアンサー
    • OBAKEI
    • MySQL
    • 回答数1
  • カラムにデータを保持する方法が知りたいです

    勤務時間の計算をMysqlのDB側でさせようとしています。 区分 始業 終了 休憩 残業 深夜残業 法休残業と 例えばあって 残業、深夜残業、法休残業のどのカラムに入るかを 切り分けて計算結果を保持したいのですが可能でしょうか? select文で出来そうな気がしますが、selectを閉じたら消えてしまいそうです。 イメージとしての例は9:00-24:00までの勤務があって(昼休憩1時間) 4時間が普通残業 2時間が深夜残業になって 4時間と2時間がそれぞれのカラムに収まって保存するみたいなイメージです。 もしも日曜日であれば区分で判定して法休残業に入るイメージにしたいと思っています。 初心者なのでそもそもDB側で処理させるのが普通なのかも分かりませんが一般的にこのような場合どう処理させるかがしりたいとおもって います。 因みにアプリ側はLaravel(php)で作っていてDBに始業時間、終了時間を 登録するところまでは出来ています。 以上よろしくお願いします。

  • UPDATE文

    社員番号(user_id)とパスワードを入力するログイン機能を持ち、ログインした社員番号の出勤時間と退勤時間を記録するようなシステムを作っています。 ログインしている社員の時刻だけ(出勤or退勤)を修正する場合、以下のUPDATE文をどのように修正すればいいでしょうか? 'UPDATE timecard SET begin = ?'; テーブルの構造は以下の通りです。 (timecardテーブル :id、 begin、 finish 、date ) (userテーブル :user_id、user_name、password)

  • ログイン機能と出退勤の管理

    社員番号(user_id)とパスワードを入力するログイン機能を持ち、ログインした社員番号の出勤時間と退勤時間を記録するようなシステムを作っています。ログインした社員番号を保持した状態で、出勤時刻(begin)と退勤時刻(finish)を記録することは可能ですか?また、SQL文を使って(出勤or退勤)時刻を修正する場合、どのようなUPDATE文にすればいいですか? テーブルの構造は以下の通りです。 (timecardテーブル :id、 begin、 finish 、date ) (userテーブル :user_id、user_name、password)

  • phpmyadminの時刻表記

    phpmyadmin、MySQLについて質問です。00:00:18(時刻型のデータ)のように表記されている箇所を「00:00:」の部分を消去して18のように表示することはできますか?

    • ベストアンサー
    • OBAKEI
    • MySQL
    • 回答数2
  • Mysql select文で取得した値をカラム保持

    勤務時間管理アプリを作っています。 深夜時間残業と普通時間残業を10:00を境に 分けてカラムを用意しています。 以前、投稿されていた記事を参考に下記のselect文で 深夜残業時間を取り出すことは出来ました。 ただ取りだした値を準備したカラムに保持出来ませんでしょうか? SELECT id,start_time,end_time,rest_time ,CASE WHEN end_time<'22:00:00' THEN NULL WHEN TIMEDIFF(TIMEDIFF(end_time,start_time),rest_time)<='08:00:00' THEN NULL ELSE TIMEDIFF(TIMEDIFF(end_time,'22:00:00'),rest_time) END AS SHINYA start_time(開始時間) end_time(終了時間) rest_time(休憩時間) SHINYA(深夜時間残業 カラムを前もって準備ここに保存)

  • PostgreSQLでログインIDとパスワードでロ

    PostgreSQLでログインIDとパスワードでログインするにはどうしたらいいですか?

  • SQLの検索について

    SQLについて質問です。MySQLで作成した以下の投稿(post)テーブルとコメント(comment)テーブルがあります。サブクエリを使用し、投稿テーブルのタイトルごとにcomment_dateが2017年04月13日から2017年04月19日の範囲内でコメントが何件あるかを取得するSQLはどのように記述できますか?

  • PostgreSQLのパスワードが分からない場合、

    PostgreSQLのパスワードが分からない場合、どうしたらいいでしょうか?

  • トランザクション使用

    DBファサードによるDB操作で、トランザクションを使用するのは、 INSERT/UPDATE/DELETE文の場合のみで、 SELECT文は使用しないでいいのでしょうか?