問題タブ [sql-match-all]
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.
sql - SQL の 1 対多は、多側で ALL によって一側を一致させます
次の 1 対多
ここで、params.source は source.id への外部キーです
パラメータ値のリスト ([1,2,3] など) がある場合、SQL でリスト内のすべての値 (ソース 1、「はい」) を持つすべてのソースを見つけるにはどうすればよいですか?
ありがとう
mysql - mysql: テーブルの結合 + OR ではなく AND スタイルのクエリを使用したレコードの検索
注: MySQL 4.0 を使用しているため、(現時点では) サブクエリはありません。
私は2つのテーブルを持っています:
- 「user_details」テーブル
- user_id と「skill_id」を持つ「skills」テーブル。これは、別の場所で定義された定義済みの一連のスキルにマップされます。
現在のクエリでは、管理者はスキルを選択してユーザーを検索できます。クエリは OR 方式で機能します。たとえば、次のようになります。
これにより返されるレコードが多すぎるため、この検索フィールドを AND 方式で機能させたいと考えています。この場合、ユーザーは選択したすべてのスキルを検索で返す必要があります。
サブクエリが最適なオプションである場合、MySQL をアップグレードできる可能性があります。
編集: group by、count、having などと関係があります。返される一致した行の数を要件として group by コマンドを制限できますか? (例: この例では 5)。
edit2: テスト:
sql - SQLの質問:レコードを除外する
Itemテーブル、Categoryテーブル、およびキーのペアである多対多のItemCategoryテーブルを含むデータベース(NexusDB(おそらくSQL-92準拠))があります。ご想像のとおり、アイテムは複数のカテゴリに割り当てられています。
すべてのエンドユーザーに、次のすべてのアイテムを選択してもらいたい
ItemID | カテゴリ
ID--------------------------------
01 | 01
01 | 02
01 | 12
02 | 01
02 | 02
02 | 47
03 | 01
03 | 02
03 | 14
など...
カテゴリX、Y、およびZに割り当てられているが、カテゴリPおよびQには割り当てられていないすべてのItemIDを選択できるようにしたい。
たとえば、上記のデータの例では、カテゴリ01または02に割り当てられているが、12ではないすべてのアイテムを取得したいとします(アイテム02および03を生成します)。次のようなもの:
SELECT ItemID WHERE(CategoryID IN(01、02))
...そしてそのセットからSELECTItemIDWHERE NOT(CategoryID = 12)を削除します
これはおそらくかなり基本的なSQLの質問ですが、現時点では困惑しています。どんな助けでもありがたいです。
sql - 名前付き属性/値のセットに基づくクエリ
私は本質的に属性/値のペアのセットを使用しています (実際にはこれにはさらに多くのことがありますが、この質問のために単純化しています)。事実上、テーブルは次のように考えることができます:
エンティティ (EntityID,AttributeName,AttributeValue) PK=EntityID,AttributeName
ターゲット (TargetID,AttributeName,AttributeValue) PK=TargetID,AttributeName
エンティティがターゲットのすべての属性と対応する値を持つ EntityID,TargetID のセットを SQL でクエリするにはどうすればよいでしょうか?
編集 (要求に応じて DDL):
mysql - 異なる行で異なる条件を満たす値を選択しますか?
これは私が理解できない非常に基本的なクエリです....
次のような 2 列のテーブルがあるとします。
1、2、3 を持つすべての個別のユーザー ID を取得したいと考えていますroleids
。上記の例を使用すると、返される結果はuserid
1 だけです。これを行うにはどうすればよいですか?
mysql - Mysqlでこのクエリを実行するには?
メッセージ、件名、および の 3 つのテーブルがありますmessage_subject_rel
。アイデアは、多くの件名に関連するメッセージを作成してから、件名を横断して検索することです。
メッセージがあるとしましょう:
2科目:
そして、次の 2 つのmessage_subject_rel
エントリがあります。
数学に関連するメッセージを検索したい場合は、3 つのテーブルを単純に結合し、where 句を subject = "Math" にします。
しかし、どうすればよいかわかりません。数学と科学に関連するメッセージを検索することです。単純な結合を行うと、次のようなテーブルが得られます。
また、where subject = "Math" and subject = "Science"
各メッセージには各行に関連する件名が1つしかないため、結果が得られませんが、複数の件名を持つメッセージの行が重複します。
それで、あなたは何をお勧めしますか?
mysql - mySQLをテーブルに強制的に参加させます(最適化されていないクエリを実行するには、必要です)
これはちょっと変です。次のクエリがあります:
ご覧のとおり、tを使用して参加し、必要なメッセージを検索します。反対側では、xを使用してメッセージのタグを印刷します。私は行を消去します:
必要なメッセージが表示されますが、タグには、タグテーブル内のすべてのタグがコマで区切られています。そこに行を残すと、それらの2つのタグしか取得できません。Explainを使用すると、次のようになります。
今はこれの専門家ではありませんが、問題はクエリを最適化するプロセスでテーブルに再参加することを拒否していることだと思います。
どう思いますか?簡単な修正はありますか?
sql - 不確定な数のパラメーターを使用する場合、動的SQLを回避するにはどうすればよいですか?
作業中のデータベースにStackOverflowのようなタグ付けシステムがあります。そして、WHERE句のタグの数が特定されていないことに基づいて結果を検索するストアドプロシージャを作成しています。結果をフィルタリングするために、0〜10個のタグが存在する可能性があります。したがって、たとえば、ユーザーは「apple」、「orange」、および「banana」でタグ付けされたアイテムを検索することができ、各結果には3つのタグすべてが含まれている必要があります。タグ付け用の相互参照テーブルも扱っているため、クエリはさらに複雑になりますが、この質問の目的のために、これについては説明しません。
文字列操作を実行し、exec()関数にクエリを送信してこれを処理できることはわかっていますが、動的SQLに関連するパフォーマンスの問題は避けたいと思います。SQLがストアドプロシージャのクエリプランをキャッシュするのが最善だと思います。
このタイプのシナリオで動的SQLを回避するために使用したテクニックは何ですか?
人気のある要望により、私が取り組んでいるクエリは次のとおりです。
これは機能しますが、ハードコーディングされています。'color'タグと'saturation'タグを検索するように設定されていることがわかります。
sql - 他の商品と同じ成分の商品を選択するSQLクエリ
「市場で入手可能な」製品と「まだ開発中」の製品を 2 つの別々のテーブル (market_product
とdev_product
) に格納するデータベースがあります。3 番目の表 (物質) には、製品を構成するすべての物質が含まれています。他の 2 つの表 (marked_product_comp
およびdev_product_comp
) は、製品構成を保持します。
市販品と同じ成分で開発中の商品を選びたい。
次の (簡略化された) 例では、クエリは dev_product テーブルから ID = 2 の製品を選択する必要があります。
そのようなクエリを書く方法は?
アップデート:
申し訳ありませんが、あいまいな方法で質問したことに気づいていませんでした。
少なくとも 1 つの市販製品と同じ組成を持つ開発中の製品を選択したい。例えば、dev_product
物質 {1,2} でできた があり、物質 {1,2,3} でできた が 1 つしかない場合、それは組成が異なるためmarket_product
破棄したいと思います。dev_product
これが明確になることを願っています。