問題タブ [one-to-many]
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.
mysql - 同じテーブル内の 1 対多のリレーションシップ
単一のテーブルで一対多の関係を定義するために使用しようとしています。たとえば、次のエントリを持つ Groups テーブルがあるとします。
グループ Coldplay は、Capital Records グループの子であり、Management Company グループの子である可能性があり、Gnarls Barkley は、Atlantic Records の子のみである可能性があります。
この関係を表す最良の方法は何ですか。PHPとmySQLを使用しています。また、それが役立つ場合は、ORM として PHP-Doctrine を使用しています。
2 つの列を持つ group_groups というリンク テーブルを作成する必要があると考えていました。owner_id と group_id。ただし、これが最善の方法であるかどうかはわかりません。
任意の洞察をいただければ幸いです。私の問題を十分に説明したかどうか教えてください。
php - PHP/mySQL - ネストされた行を多次元配列にフェッチする方法
ループ内でdbクエリを決して使用しないことを学んだ私の別の質問から来て、ループする前に便利な方法ですべてのデータを取得する方法を学ばなければなりません。
「スケール」と「アイテム」の 2 つのテーブルがあるとします。items 内の各アイテムは、scale 内の 1 つの scale に属し、外部キー (scaleID) でリンクされます。最初の次元がすべての列を含むすべてのスケールであり、1 つのスケールのすべての列のすべての項目がネストされるように、1 つのクエリですべてのデータを配列構造にフェッチしたいと考えています。
結果は次のようになります。
これまでのところ、主に 1 対 1 の関係の左結合を行ってきました。これは一対多であり、私はそれについて頭を悩ませることはできません。
それは正しい結合ですか、サブクエリでも実行できますか、外側の行全体を取得する方法も...
後で、ネストされた foreach ループを使用して反復処理したいと思います。
頭が悪いだけなのかな…
linq-to-sql - Linq2Sqlで1対多の関係を保存するための最良の方法は何ですか?
Linq2Sqlで単純な1対多の関係を保存するための最良の方法を見つけようとしています。
次のPOCOモデル(pseduoコードbtw)があると仮定しましょう:
人は0から多くのVechiclesを持っています。
ここで、Personを保存するときに、そのpocoオブジェクトをリポジトリコード(たまたまL2S)に渡します。人物オブジェクトをうまく保存できます。私は通常これを行います。
その人が持っている可能性のある車両のリストをどこでどのように扱うべきかわかりませんか?助言がありますか?
sql - 多くの条件を満たすすべての条件を要求することで、1 対多のクエリをフィルター処理する
次の表を想像してください。
テーブルボックスを作成します( id int, name text, ...);
テーブルの作成
テーブルは次のようになります。
オレンジが少なくとも 1 つ含まれ、オレンジ以外が何も含まれていないボックスを選択するにはどうすればよいですか?
数十万個の箱があり、おそらく百万個のものが箱に入っていると仮定すると、これはどのようにスケーリングしますか?
結果セットをスクリプトで後処理するのではなく、可能であれば、これをすべて SQL に保持したいと思います。
私はpostgresとmysqlの両方を使用しているため、mysqlがサブクエリを最適化しないことを考えると、サブクエリはおそらく悪いです(とにかくバージョン6より前)。
java - Ibatis で 1 対多の関係を実装する方法は?
このクラスがあるとしましょう:
クラス A はクラス B と 1 対多の関係にあります。私は既に B オブジェクトをキャッシュして ID で返すサービスを持っています。
テーブルスキーマは次のようになります
では、これを iBatis でどのようにマッピングすればよいでしょうか。
B オブジェクトは既にキャッシュされているため、ID のリストを A オブジェクトに取得し、サービスを使用して As を強化したいと考えています。
誰かがそれを行う方法を提案できますか?
私が考えることができる2つの可能な代替案は次のとおりです。
- A (AtoB マップ) に内部クラスを作成し、iBatis 構成で選択クエリを使用してこれを設定します。
- iBatis resultMap/select 内で、別の select を使用して B id のリストを取得します (config でこれを行う方法についてはよくわかりません)。
php - PHP と 1 対多の結果の出力
これまで、php で 1 対 1 の関係しか扱っていませんでしたが、1 対多の関係に関する問題に行き詰まっています。私はこれに数日間座っていましたが運が悪かったので、気が狂う前に誰かが介入して解決策を示してくれることを切望しています.
私のデータベースには一連の URL があり、さまざまなテーブルから、他のさまざまなフィールドとともに SELECT クエリによって受信されます。すべての URL には少なくとも 1 つのカテゴリが関連付けられていますが、複数のカテゴリを持つことができます。したがって、私の結果では、次のように見えるかもしれません。
私はこれを機能させました。while ループと mysql fetch 配列を使用して、ループして出力すると、結果は上記とまったく同じように見えます。それは素晴らしいですが、私が必要とするのは、次のようなものを読むことです:
そのため、基本的に各 URL のすべてのカテゴリが何らかの方法で結合され、出力されます。私の最初の試みで、入れ子になった while ループを試すようになりましたが、うまくいきませんでした。これが実現可能かどうかはわかりません。それとは別に、多次元配列が必要かどうか疑問に思っています(完全な推測ですが、これまで使用する必要はありませんでした)。
上記のように、これらの結果をリンク ID で並べ替えているので、現在のループ反復のリンク ID が最後の反復のリンク ID と一致するかどうかがわかります。その場合、複数のカテゴリを持つものがあります。とても近いのですが、よくわかりません。
何か案は?
hibernate - EJB3/JPAのコレクションから単一の「デフォルト」エンティティを熱心にフェッチする方法
複数の電話番号を持つPersonエンティティがあります。
ここで、熱心に取得されるPersonの「デフォルトの電話番号を取得する」メソッドを実装したいと思います。このデフォルトの電話番号は、phoneNumbersセットの電話番号の1つです。これを行う方法はありますか?
私がこれを実装しようとしている理由は、このデフォルトの電話番号を、データベース内の「すべての」人をリストするページにリストするためです。
JPAの初心者として、私は最初に次の方法で試してみました。
しかし、これはもちろん非常に遅いリストページをもたらしました。
では、クエリに基づいてエンティティのコレクションから単一のエンティティを取得する一時的なプロパティを定義する方法はありますか?永続性プロバイダーとしてHibernateを使用しています。
nhibernate - Hibernate マッピングの問題
次のオブジェクト モデルがあります。
Element
多くの子と子孫を持つトップレベルの抽象クラス。- クラス
Event
。 - それぞれに s の
Element
袋が含まれていますEvent
。 - それぞれ
Event
に親へのポインターがありますElement
。
これまでは、かなり標準的な 1 対多の関係でした。
しかし、具体的なクラス戦略ごとにテーブルを使用したい。したがって、クラスElement
はデータベースにマップされません。私はこの方法で解決しようとしました: の具体的な子孫のそれぞれがElement
独自の Bag of Event
s を定義します。これの問題は、各<bag>
要素に要素が含まれていること<key>
です。Parent
そのキーは のプロパティを指していますEvent
。またParent
、s テーブルの列をEvent
、Bag を含むテーブルへの外部キーにします。しかし、1 つの列を複数のテーブルの外部キーにすることはできず、挿入時に例外が発生します。
Parent
また、Event
s テーブルのフィールドを多対任意の種類のフィールドにしようとしました。それはうまくいきました。しかし、リレーションを双方向にしたい場合、つまり の子孫にバッグを追加したい場合Element
、同じ問題に戻ります。バッグ => 外部キー => 挿入時の例外。
このケースは見かけほどユニークではないと確信しています。よろしくお願いいたします。
c# - Hibernate の 1 対多のマッピングの問題
外部キー関係を持つ 2 つの単純なテーブルをマップする必要があります。テーブルの 1 つは、列id (int 型の主キー)、name、address、およびguid (新しく追加され、主キーではありません) を含むContactです。もう 1 つは、列id (int 型のプライマリ キー)、contact___ id (contact テーブルの id の外部キー)、およびphone__numberを含む phone__numberです。
Contact テーブルのマッピング ファイルは次のとおりです。
Phone_number テーブルのマッピング ファイルは次のとおりです。
Contact および PhoneNumber クラスは次のとおりです。
contact と phone_numbers を別々にロードすると動作しますが、set 要素を追加して 1 対多の関係を取得した後、nhibernate でエラーが発生します:
NHibernate.MappingException: タイプ OfflineDbSyncWithNHibernate.Models.Contact に指定されたマッピング情報が無効です。プロパティ タイプの不一致についてマッピング ファイルを確認してください
私は nHibernate を初めて使用するので、set 要素に誤りがあるのか、それとも使用すべきではないのかわかりません。どんな助けでも大歓迎です。