問題タブ [denormalized]
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.
hibernate - Hibernate: 一方向冗長列のマッピング
私のスキーマには、レポート クエリを高速化するために使用される冗長な列がいくつかあります。たとえば、セールの購入合計はテーブルの"purchase_total"
列に保存されますが"sale"
、モデルでは、セールで購入された各アイテムの販売価格を合計することで動的に計算されます。この値は、Sale オブジェクトで「getPurchaseTotal」アクセサーを呼び出すことによって取得できます。
挿入/更新時にこの値を sales テーブルの purchase_total 列にマップする方法はありますが、データベースからロードするときに Sale オブジェクトのハイドレーションには含まれませんか? 派生列または計算列に似ていると思いますが、逆です。
データベース自体のトリガーを介してこれを処理するのが最善ですか?
mysql - 括弧内に多くの値がある場合、この mysql IN (1,2,3,4...) 条件が機能しないのはなぜですか?
コンマで区切られた州のリストを列に保存しています。
このように: 1,2,3,4,5,6,7,8.. など、ID だけです。
次に、ID 8 の状態を持つすべての行を取得するクエリを実行しています。これは、状態のリストに項目がほとんどない場合に機能します。
これはクエリとテーブルです。
列の状態にコンマで区切られた 10 個の ID が含まれている場合は機能しますが、50 個以上の場合は機能しなくなります。上記の結果では、ID 8 を含む多くの状態を持つ行は表示されません。
何か案が?パートナーと状態の間の関係を保存するために別のテーブルを作成する必要がないために、このアプローチを使用していますか、それとももっとうまくやるべきですか?
mysql - コンマ区切りリストに関するMysql WHEREの問題
この問題について助けが必要です。
MYSQLテーブルにはフィールドがあります:
アーティスト uid 401 のすべてのレコードを検索する必要があります
私はこれをします
artist_list フィールドの値が「401」のみのすべてのレコードがありますが、11,401 の場合、このクエリは一致しません。
何か案が ?
(アーティストの uid が 3 の場合 (30、33、3333 に一致するため)、ユーザーの LIKE メソッドを使用できません...
mysql - ID の配列に従って ID を照会する
私のウェブサイトには、2 つのテーブルを持つ mysql db が含まれています。1 つのテーブルには「id_array」というフィールドがあり、「1,3,7,78,89,102」のような文字列が含まれています。これは、2 番目のテーブルの ID の配列を表します。
2 番目のテーブルの ID を取得するための最良の戦略は何ですか? 私は最速の方法が欲しい。
現在、「SELECT * FROM first_table WHERE id IN (id_array)」を使用しています。
以前は1つずつクエリを実行していましたが、かなり遅いと思います。
誰かが私にデータベースを提供するためのより良い構造を持っているなら、それは素晴らしいことです. この構造は私が思いついた最高のものですが、それほど効率的ではないと確信しています。最初のテーブルの ID に属するすべての ID をすばやく簡単に見つける方法が必要です。
助けていただければ幸いです。
sql - 列に埋め込まれたリストと範囲をどのように扱うことができますか?
処理しようとしているデータの形式を制御できません。もちろん、スクリプト言語を使用してデータベースの外で次の問題に対処することもできますが、扱うデータの量と手動の必要性を排除したいため、それは避けたいと考えています。ステップ。
要するに、リストの表があります。リストは、単一の 3 桁の文字列、複数の 3 桁の文字列、3 桁の文字列の範囲 (例: 012-018
)、またはいくつかの 3 桁の文字列と 3 桁の文字列の範囲で構成される場合があります。例えば:
わかる、わかる。
これを次の表に置き換えたいと思います。
SQLでこれを行う方法はありますか?
sql - SQL-アイテムがレコードのリストにあるかどうかを確認する方法
UserRolesという名前のフィールドに格納されているアイテム(整数)のリストを含む列名MyRolesがあります。特定のアイテムがリストにあるかどうかを確認するクエリを作成したいと思います。リストは次のようになります:「1,2,3」
WHEREMyRolesを使用できません
クエリはどのようになりますか?
これは私が考えていることと似ています:
答えが簡単に実装できず、醜い道をさらに進んでしまうという事実は、正規化されたデータベースが常に最善の策であることを明確に示しています。
php - コンマ値を使用してテーブルを結合する
3つのテーブルを結合するのは大変です。私は、ニュースレターのリストを取得するために参加したいnewsletter_items、newsletter_fields、およびnewsletter_mailgroupsを持っています。
Newsletter_items には次のフィールドが含まれます。
Newsletter_fields には次のフィールドが含まれます。
ここで、field_letter_uid は、フィールドが属するニュースレターです。
また、newsletter_mailgroups には次のフィールドが含まれます。
私が望むのは、これらの 3 つのテーブルを組み合わせて、次のようなすべてのニュースレターのリストを取得できるようにすることです。
つまり、SQLクエリで3つのテーブルを結合し、そのプロセスでメールグループテーブルから受信者を選択し、グループ1、グループ2のようにカンマで区切って表示します
これは私が今得たものです
しかし、メールグループをそこに入れる方法がわかりません。
sql - 特定の値についてカンマ区切りの列を照会することは可能ですか?
これに似たレイアウトのテーブルがあります (所有していないため、変更できません)。
特定のカテゴリ ID を含む行を返す必要があります。値は文字列のどこにでもある可能性があるため、LIKE ステートメントを使用してクエリを作成することから始めます。
SELECT id FROM table WHERE categories LIKE '%c2%';
行 2 と 3 を返します
SELECT id FROM table WHERE categories LIKE '%c3%' and categories LIKE '%c2%';
行 2 と 3 は取得できますが、行 4 は取得できません
SELECT id FROM table WHERE categories LIKE '%c3%' or categories LIKE '%c2%';
再び行 2、3、および 4 を取得します
LIKE
私はすべてのステートメントが好きではありません。Oracle のドキュメントで見つけましFIND_IN_SET()
たが、10g では動作しないようです。次のエラーが表示されます。
このクエリを実行する場合: SELECT id FROM table WHERE FIND_IN_SET('c2', categories);
(ドキュメントの例) またはこのクエリ: SELECT id FROM table WHERE FIND_IN_SET('c2', categories) <> 0;
(Google の例)
行 2 と 3 が返されることを期待します。
LIKE
大量のステートメントを使用する代わりに、これらのクエリを作成するより良い方法はありますか?
php - データベースの unserialize() 値を foreach の後に json_encode に入れる
$row->units
use function serialize()
=>[$row->units]
を使用してデータベースの値 (配列) に挿入しunserialize()
ます。(jQuery での ajax 呼び出しの送信を返す)json_encode
$row->name
データベースの列:
$row->単位 =>
a:6:{i:0;s:15:"Coffee";i:1;s:14:"Satellite";i:2;s:11:"Game Notes";i:3;s:14:"Internet";i:4;s:10:"Pool";i:5;s:0:"";}
$行->名前=>
George Kurdahi
上記のコードのエラーは次のとおりです。
PHP エラーが発生しました
重大度: 通知
メッセージ: unserialize() [function.unserialize]: 281 バイトのオフセット 277 でエラーが発生しました
ファイル名: model.php
ライン番号: 22
sql - n番目の要素regexpを取得するOracleSQL
OracleのSQLを使用して、コンマ区切りの文字列でn番目の要素を取得しようとしています。
私はこれまでに次のものを持っています。
しかし、要素が空の場合は機能しません。つまり、誰か助けてもらえますか?