問題タブ [jointable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails-3 - Rails:結合テーブルの2つの属性の一意性により500エラーが発生する
私は次のモデルを持っています。これは基本的に、教授が特定のレベルの多くの科目の知識を持っていることを意味しようとしています。科目は固定されているため、新しい科目は作成されず、知識結合テーブルを介して教授に「関連付けられる」だけです。
教授が科目を自分のアカウントに追加できるフォームが必要で、知識用のフォームを用意することにしました (レベルも挿入できるようにしたいため)。
次のようになります。
そして、Knowledges コントローラーのcreateアクションには、次のようなものがあります。
一意性違反があるため、このナレッジを挿入できないというActiveRecordを取得したい/期待していますが、ログに 500 とロールバックが表示されるだけですが、実行は続いているようです。私の質問は次のとおりです。私は何を間違っているのでしょうか、またはこのモデリングの状況をどのように改善できますか? そのモデルのフィールドを作成したいので、フォームを結合モデルに関連付ける必要があると思います...しかし、おそらく私は間違っているので、簡単でクリーンな方法で行うことができます。
編集:
コメントの1つで尋ねられたように、フォームの送信とロールバック直後の500エラーのログは次のとおりです。
次のように、作成アクションにいくつかの条件を追加しました。
そして、これは実際には 500 の直後に次のことを示しています。
オブジェクトにエラーを追加するだけでなく、なぜ例外が発生するのか疑問に思い、その状況を管理させてください。次の行がすべきことではありませんか?
mysql - 結合テーブルを埋める方法は?
私はmySQLが初めてです。2 つのテーブルから結合テーブルを作成しました。
学生は私のウェブサイトのフォームに記入し、名前と宿題の説明を提供する必要があります。私の知る限り、PHPコードでデータベースにクエリを実行し、それぞれのテーブルにstudent.nameとhomework.descriptionをINSERTする必要があります。ですが、students_homeworks テーブルを埋めるにはどうすればよいですか? 2 つのテーブルを再度クエリして ID を見つけ、結合テーブルに入力する必要がありますか? (私はそれをグーグルで調べましたが、結合テーブルとSQL JOINコマンドを作成する方法を見つけました)
java - Java Hibernateアノテーション(@ JoinTable、@ Filter)
私は最近Hibernateの使用を開始し、すべての注釈に頭を悩ませて、適切に処理できるようにしようとしています。以下のような2つのテーブル「user」と「user_friends」があります
とユーザーの友達テーブル
SQLで、次のようなクエリを実行しました。
これに似た方法でJavaセットアップに2つのクラスがあります
私は以前にこの質問をしましたが、それでも私が望むようにこれを機能させることができませんでした。そのバディの名前と電子メールを含み、登録時間などではなく、他には何も含まないUserBuddy.classのセットを返すことができる必要があります(ユーザークラスを使用してマップします)。また、リクエストを受け入れたバディのみを返すようにするのも困難です(ACCEPTED = 1)
誰かが何か提案をすることができますか?
hibernate - @OneToMany @JoinTable と更新操作での Hibernate の問題
やや奇妙な問題が発生しています。次の JPA マッピングがあります。
と:
そして、私は簡単なテストを行っています:
- いくつかの属性を持つ場所を永続化する
- これらの属性のいずれかの名前を変更します
- Location をマージして戻します (変更された属性を使用)
私の期待 (伝播を考慮して) は、場所をマージすると、更新される属性に単純に伝播されるということです。これは (広く) 発生します。変更された属性の値は実際に更新されますが、マッピングが既に存在する結合テーブルで新しい INSERT が試行されます。この新しく不要な挿入のため、(予想どおり) 失敗は次のとおりです。
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1-1' for key 'PRIMARY'
現在、犯人は方法のようhashCode
でありequals
、実装されているようです-属性のセットがHibernateによって永続化されると、コレクションの永続化は各エントリ(各属性)を挿入する必要があるかどうかを確認します:
if ( collection.needsInserting( entry, i, elementType ) )
したがって、属性の 1 つの名前が変更されたため、これは挿入する必要があると見なされます (これは実際には正しくありません - 挿入は必要なく、更新のみが必要です) - したがって、結合テーブルでの挿入操作です。もちろん、equals と hashcode に id を使用することもできますが、それは Hibernate が推奨する方法ではありません。これにつながる可能性のあるマッピングで何かが欠けていますか? これは非常に標準的なマッピングです。単純な 1 対多で単純なマージ操作です。動作させるための提案はありますか?
どんな助けでも大歓迎です。
ありがとう。
オイゲン。
sql - データベース アーキテクチャでテーブルを結合しますか?
私はデータベース アプリケーション (Access 2007) に取り組んでおり、アーキテクチャに関していくつか質問があります。これは、これまでに作成した中で最も複雑なアプリケーションです。
現在、5 つのテーブルがあり、それぞれに固有の ID フィールドがあります。
- プラットフォーム
- 車
- マニュアル
- 手順
- 障害
同じ障害が複数の手順に表示される可能性があり、同じ手順が複数のマニュアルに表示される可能性があります。ユーザーがレコードをコピーおよび削除したり、テーブル間でレコードを相互リンクしたりできるようにしたいと考えています。
現在、上記の各テーブル間にテーブルを結合しています。
- platform_vehicles
- vehicle_manuals
- manuals_procedures
- procedure_faults
コピーおよび削除アクションが他のテーブルにカスケード効果を及ぼすため、(結合テーブルの内容を編集することによって) メイン テーブル間の関係を編集することは非常に複雑になっています。私の考えでは、これは再帰を使用して効率的に実行できますが、実際に機能させることはまったく別の話です。
質問 #1: 私が説明したアーキテクチャは、このデータを整理するための「適切な」方法ですか、それとも不必要に複雑ですか? (私はそのように物事を行う習慣があります。)
質問 #2: これを行うための「推奨される」方法はありますか?
質問 3: 次のように、テーブルを別の方法で整理したほうがよいでしょうか。
5テーブルのみ、
- プラットフォーム
- 車
- マニュアル
- 手順
- 障害
各テーブルには、コンテンツ フィールドのキーと、すぐ上のテーブルの親レコードを表す別のキーがあります。例えば、
- プラットフォーム
- プラットフォーム ID、プラットフォーム名
- 車
- platformID, vehicleID, vehicleName
- マニュアル
- vehicleID、manualID、manualName
- ...
これは私にはより簡単に思え、確かにそれほど複雑ではありません。専門的なフィードバックをお寄せいただければ幸いです。
ありがとう!
c#-4.0 - Fluent nHibernate を使用して、列名が異なる 2 つのテーブルを結合します
流れるような nhibernate 3.1 を使用してレガシー データベースにマップしています。2 つのクラスがあり、B を A に結合したいと考えています。データベース構造には外部キーがありません。
AModel.OccurrenceNumber と BModel.OccurrenceNumber は同じデータ (つまり、一方と他方で # 1234 を要求) を持ちますが、列名が異なるだけです。マッピング段階で参加することはできますか? 必要に応じて、それらに参加するための linq ステートメントを作成できますが、ここで実行できるかどうかを知りたいです。前もって感謝します。
cakephp - 2 つのテーブルの問題を結合する CakePHP テーブル
CakePHP は初めてで、テーブル全体のリレーションの概念は非常に混乱しています。
コンピテンシーとコンピテンス評価の 2 つのテーブルがあります。コンピテンシーは、名前と ID のリストを格納します。
ユーザーは、このテーブルからさまざまなコンピテンシーを選択して評価できます。その評価は、competenceRatings テーブルに格納されます。
ユーザーが評価を行っていないコンピテンシーの名前を、competenceRatings テーブルに取得できるようにしたいと考えています。つまり、comptenceRatings テーブルに (指定された user_id に対して) エントリがないコンピテンシー テーブルからの名前のリストが必要です。
コンピテンシー->hasMany->competenceRatings、competenceRatings->belongsTo->コンピテンシー関係を試しました。
でもダメ!
この結果には他の関係が必要ですか? または、検索クエリで結合条件を使用してテーブルを結合できますか?
ありがとう。
編集
この方法はうまくいきました:
php - PHPのOnclick関数を使用して2つのテーブルを結合するには
Postgresデータベースのテーブル名を含む2つのドロップダウンリストがあります。これで、ユーザーが選択した後、JOINテーブルができました。ここに、ドロップダウンリスト用に実装されたコードがあります。
test.php
これで、レベルからのJOINテーブルとパラメーターからのテーブルができました。ドロップダウンリストのテーブルは次のとおりです。
上記のテーブルを実行時に結合する方法と、表形式で表示する必要があります。onclick関数にリアルタイムでJOINクエリを与える方法がわかりません。誰かがこれを形成するのを助けることができますか?前もって感謝します。
sql - SQLで結合後に同じ値を持つ行を数える
複数のテーブルが既に結合されている状態で、2 つの列に同じ値を持つ行の総数を表示する列を追加するにはどうすればよいですか。すべての結合と where ステートメントの後、次の列を持つテーブルになります。
製品 | ポリシー番号 | 行番号 | 裏書名
表にはさらに多くの列がありますが、参照する必要があるのはこれらの列です。Product から Policy Number への 1 対多の関係、Policy Number から Line Number への 1 対多の関係、Line Number から Endorsement への 1 対多の関係、または一致しない関係があります。
現在のクエリは次のようになります。
結果のテーブルは次のようになります
私がしなければならないことは、各ポリシー ラインの承認の数を数えることです。上記の例では、製品 CH の場合、複数の裏書きがある唯一の項目はポリシー 8001 - 行 3 であることがわかります。製品 PP の場合、複数の裏書がある唯一の項目はポリシー 9002 - 行 2 です。
最初に必要なのは、すべての行のカウントを表示する新しい列です。この列には、その行の同じ Policy 値と Line 値を持つ発生の総数が示されます。テーブルは次のようになります。
このカウントを正常に達成した後、複数の承認を持つ行を持たないポリシーを持つ行のみを返す別のクエリが必要になるため、この場合、ポリシー 8001 と 9002 は表示されません。
私は、さまざまな投稿で見たあらゆる種類のさまざまなことを試してみましたが、私のニーズに適応しましたが、この特定の例で機能する解決策は見つかりませんでしGROUP BY
た。HAVING
私はすでにかなりの数のWHERE
ステートメントといくつかの Order By も持っていることを覚えておいてください。
編集: Microsoft SQL Server Management Studio 2010 を使用してこれらのクエリを実行しています
ありがとう!
asp.net - 外部キーAsp.Netを持つ結合テーブルからレコードを削除する方法
他の 2 つのテーブルを結合しているテーブルからレコードを削除しようとしていますが、外部キー関係がこの操作の実行を妨げているようです。
データベースでは外部キー制約が強制されておらず、奇妙にスローされるエラーがないことに注意してください。単にレコードを削除するわけではありません。また、結合テーブルではないテーブルから他のレコードを簡単に削除できます。
私が使用している現在のフレームワークは Asp.Net MVC2 ですが、SqlCommand オブジェクトを使用して削除しようとしても機能しなかったため、フレームワークに起因するものではありません。注意すべきことの 1 つは、ストアド プロシージャを使用して実行する場合、または SQL Management Studio でクエリを実行する場合に機能することです。また、アプリは現在、データベースと同じサーバー上にありません。
ここに何かアイデアはありますか?
前もって感謝します。