問題タブ [multiple-tables]
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 - 選択クエリで2つのテーブルの同じフィールド名を区別する方法は?
データベースに 2 つ以上のテーブルがあり、それらすべてに次のような同じフィールド名が含まれています
SELECT
これら 3 つのテーブルからほぼすべて同じフィールドを取得するクエリを作成する必要があります。私はこのようなものを使用しています:
しかし、field1
の値を出力すると、最後のテーブル値が得られます。
同じフィールド名を持つ 3 つのテーブルのすべての値を取得するにはどうすればよいですか? すべてのテーブルに対して個別のクエリを作成する必要がありますか、または単一のクエリですべてを取得する方法はありますか?
mysql - Mysql - 複数の結合と条件を含むこの検索クエリを変更して、目的の結果を取得するのを手伝ってください
システムについて:
タグベースの検索をフォローしています。
チューターはパックを作成します - チューターのタグ関係は tutors_tag_relations に保存され、パックの関係は learning_packs_tag_relations に保存されます。すべてのタグはタグ テーブルに格納されます。
システムには、チューター、ユーザー (tutor_details にリンク)、learning_packs、learning_packs_tag_relations、tutors_tag_relations、およびタグの 6 つのテーブルがあります。
システムをセットアップするには、次の新しいクエリを実行してください。
家庭教師 Vivian Richards は、「Cricket 1」(アクティブ) と「Cricket 2」(非アクティブ) の 2 つの Learning_packs を作成しました。
要件:
learning_packs
ここで、検索キーワードに AND ロジックを使用して検索したいと考えています。次のクエリを修正して、パック名またはチューターの名前、姓などの用語の任意の組み合わせで検索すると、すべてのアクティブなパック (直接のパックまたはそれらのチューターによって作成されたパックのいずれか) が返されるようになります。
================================================== ================================ 1.「ヴィヴィアン・リチャーズ」で検索
2.「クリケット 1」で検索
ご覧のとおり、「Cricket 1」を検索するとそのパックが返されますが、Vivian Richards を検索しても同じパックは返されません。
cakephp - 複数の「ユーザー」テーブルを持つ Cakephp Auth
複数のテーブルで 1 つの認証プロセスと「ユーザー」のみを処理する方法を知りたいです。ユーザー、管理者、アーティスト、チーム管理者の 4 つのユーザー テーブルがあり、すべて特定のフィールドがありますが、これらすべてのユーザーがホームページの 1 つのフォームのみを介して接続し、その後、特定のダッシュボードにリダイレクトされるようにしたいと考えています。
リダイレクトは問題ではなく、追加されたいくつかのルートは機能するはずですが、これをすべて可能にするためにどこを見たり開始したりすればよいか本当にわかりません。
乾杯、
ニコラス。
編集:これが最終的な解決策です(deizelに感謝)
optimization - Mysql-このクエリを最適化するのに役立ちます
システムについて:
-システムには合計8つのテーブルがあります-ユーザー-Tutor_Details(チューターはユーザーの一種です。Tutor_Detailsテーブルはユーザーにリンクされています)-learning_packs、(チューターによって作成されたパックを格納します)-learning_packs_tag_relations、(検索用のタグ関係を保持します)- tutors_tag_relationsとタグと注文(家庭教師のパックの購入の詳細を含む)、order_detailsは注文とtutor_detailsにリンクされています。
関連するテーブルのより明確なアイデアについては、最後の「テーブル」セクションを確認してください。
-タグベースの検索アプローチが採用されています。タグの関係は、新しい講師が登録したとき、および講師がパックを作成したときに作成されます(これにより、講師とパックが検索可能になります)。詳細については、「このシステムでタグがどのように機能するか」のセクションを確認してください。下。
以下は、私が最適化しようとしているより複雑なクエリの(実際ではない)より単純な表現です:-explanation of parts
クエリのようにステートメントを使用しました
================================================== ==========================
================================================== ===================
上記のクエリは何をしますか?
- ANDロジックは検索キーワード(この例では2つ-「民主主義」と「独裁」)を検索しますか。
- 2つのセットの和集合に両方のキーワードが存在するチューターのみを返します-チューターの詳細と、チューターによって作成されたすべてのパックの詳細。
明確にするために-家庭教師の名前「SandeepanNath」がパック「Myfirstpack」を作成したとすると、次のようになります。-
- 「SandeepanNath」を検索すると、SandeepanNathが返されます。
- 「Sandeepanfirst」を検索すると、SandeepanNathが返されます。
- 「Sandeepansecond」を検索しても、SandeepanNathは返されません。
================================================== ====================================
問題
上記のクエリによって返される結果は正しいです(そしてロジックは期待どおりに機能します)が、負荷の高いデータベースでのクエリにかかる時間は、0.005〜0.0002秒のオーダーの通常のクエリタイミングとは異なり、25秒程度です。完全に使用できません。
考えられるすべてのフィールドがまだインデックスに登録されていないために、遅延の一部が発生している可能性がありますが、同じ結果を表示する、可能な限り最適化されたソリューションとして、より良いクエリをいただければ幸いです。
================================================== ========================================
このシステムでタグはどのように機能しますか?
- 講師が登録すると、タグが入力され、名前、名前などの講師の詳細に関してタグ関係が作成されます。
- 家庭教師がパックを作成すると、再びタグが入力され、パック名、説明などのパックの詳細に関してタグ関係が作成されます。
- tutors_tag_relationsに保存されている家庭教師とlearning_packs_tag_relationsに保存されているパックのタグ関係。個々のタグはすべてタグテーブルに保存されます。
================================================== ==================
テーブル
次の表のほとんどには、ここで省略した他の多くのフィールドが含まれています。
================================================== =================================
以下は正確なクエリです(これにはクラスも含まれます-チューターはクラスを作成でき、検索用語はチューターによって作成されたクラスと照合されます):-
注意-提供されたデータベース構造には、このクエリのようにすべてのフィールドとテーブルが表示されるわけではありません
================================================== ===================================
Explainクエリの出力:- このスクリーンショットを参照して くださいhttp://www.test.examvillage.com/Explain_query.jpg
sql - Mysql-このクエリを最適化するのに役立ちます(改善された質問)
システムについて: -クラスとパックを作成するチューターがいます-タグベースの検索アプローチが採用されています。タグの関係は、新しいチューターが登録するときと、チューターがパックを作成するときに作成されます(これにより、チューターとパックが検索可能になります)。詳細については、「このシステムでタグがどのように機能するか」のセクションを確認してください。下。
以下は関連するクエリです
問題
上記のクエリによって返される結果は正しいです(そしてロジックは期待どおりに機能します)が、クエリにかかる時間は、重いデータの場合は驚くほど長くなり、現在のデータの場合、注文の通常のクエリタイミングとは対照的に25秒のようになります0.005〜0.0002秒であるため、完全に使用できなくなります。
考えられるすべてのフィールドがまだインデックスに登録されていないため、遅延の一部が発生している可能性があります。タグテーブルのタグフィールドにインデックスが付けられます。クエリに問題がありますか?20秒以上の実行時間の背後にある理由は何でしょうか?
このシステムでタグはどのように機能しますか?
- 講師が登録すると、タグが入力され、名前、名前などの講師の詳細に関してタグ関係が作成されます。
- 家庭教師がパックを作成すると、再びタグが入力され、パック名、説明などのパックの詳細に関してタグ関係が作成されます。
- tutors_tag_relationsに保存されている家庭教師とlearning_packs_tag_relationsに保存されているパックのタグ関係。個々のタグはすべてタグテーブルに保存されます。
Explainクエリの出力:- このスクリーンショットを参照してください-http ://www.test.examvillage.com/Explain_query.jpg
mysql - 一時テーブルを使用するようにこの単一の複雑なクエリを変更するのを手伝ってください
システムについて: -クラスとパックを作成するチューターがいます-タグベースの検索アプローチが採用されています。タグの関係は、新しいチューターが登録するときと、チューターがパックを作成するときに作成されます(これにより、チューターとパックが検索可能になります)。詳細については、「このシステムでタグがどのように機能するか」のセクションを確認してください。下。
以下は、関係するクエリ です。一時テーブルを使用したアプローチを提案できる人はいますか。関連するすべてのフィールドにインデックスを付けましたが、このアプローチではこれが可能な限り最短の時間であるように見えます:-
問題
上記のクエリによって返される結果は正しいです(そしてロジックは期待どおりに機能します)が、クエリにかかる時間は、重いデータの場合は驚くほど長くなり、現在のデータの場合、注文の通常のクエリタイミングとは対照的に10秒のようになります0.005〜0.0002秒であるため、完全に使用できなくなります。
誰かが私の前の質問で次のことをするように提案しました:-
- 一時テーブルを作成し、最終的な結果セットになる可能性のあるすべての関連データをここに挿入します
- このテーブルで複数の更新を実行し、必要なテーブルをすべて同時にではなく、一度に1つずつ結合します。
- 最後に、この一時テーブルに対してクエリを実行して、最終結果を抽出します
これはすべてストアドプロシージャで行われ、最終結果は単体テストに合格し、非常に高速です。
私は今まで一時テーブルを使ったことがありません。私がいくつかのヒントを得ることができた場合にのみ、私が始めることができるように一種の概略図...
クエリに問題がありますか?10秒以上の実行時間の背後にある理由は何でしょうか?
このシステムでタグはどのように機能しますか?
- 講師が登録すると、タグが入力され、名前、名前などの講師の詳細に関してタグ関係が作成されます。
- 家庭教師がパックを作成すると、再びタグが入力され、パック名、説明などのパックの詳細に関してタグ関係が作成されます。
- tutors_tag_relationsに保存されている家庭教師とlearning_packs_tag_relationsに保存されているパックのタグ関係。個々のタグはすべてタグテーブルに保存されます。
doctrine - 複数のテーブルからの DQL 削除 (教義)
関連する複数のテーブルから DQL 削除を実行する必要があります。SQL では、次のようなものです。
DQL を使用してこのステートメントを実行する必要がありますが、これで行き詰まっています。:(
しかし、DQLパーサーは私にこの結果を与えます:
Google とスタック オーバーフローを検索すると、次の (役立つ) トピックが見つかりました:
Doctrine を使用して MySQL データベースで複数テーブルを削除するための構文は何ですか?
しかし、これはまさに私の場合ではありません - 単一のテーブルからの削除がありました。
DQL パーサーの動作をオーバーライドする方法はありますか? または、教義を使用して複数のテーブルからレコードを削除する他の方法がありますか?
注: doctrine ビヘイビアー (Doctrine_Record_Generator) を使用している場合は、最初にDoctrine_Core::initializeModels()
DQL 操作を実行するためにこれらのテーブルを初期化する必要があります。
database - データベース設計-2つのテーブルのうちの1つにFK関係を設定するにはどうすればよいですか?
複数のデータベーステーブル間で一意のIDフィールドを維持するための最良の方法は何ですか?
私のデータベースには企業と人の両方が含まれており、両方のエンティティに一意のIDフィールドが関連付けられている必要があります。さらに、IDを外部キーとして使用して、企業または個人のいずれかを参照できる他のテーブル(たとえば、住所)があります。
私が考えているいくつかのアイデアは次のとおりです。
行が挿入されたときに計算される非自動番号IDフィールドを使用します。これで一意であるという私の問題は解決しますが、関連するプロパティ(住所など)で何かを検索したいときはいつでも、探しているレコードが含まれている両方のテーブルをチェックする必要があります。
オートナンバーIDにプレフィックスを追加して、IDを検索するテーブルを識別します。ただし、関連付けられたテーブルのIDフィールドは、おそらく文字列になるか、関連付けられているテーブルのフラグが含まれるため、どのようになるかわかりません。パフォーマンスに影響します。
PeopleandBusinessesを1つのテーブルにマージします。これに関する私の問題は、人と企業が異なるプロパティを持ち、別々のフィールドを必要とすることです。私は別々のエンティティに別々のテーブルを持っていることを好むので、この種は私の性質に反します。
一意のIDフィールド、個人または企業のIDフィールド、およびどちらであるかを示すフラグを含むマスターテーブルを作成します。次に、そのIDを外部参照番号および関連するすべてのテーブルで使用します。
私はdbaではないので、私が気付いていないこれを処理するいくつかのより良い方法
私が使用するソリューションが何であれ、多数のレコードを簡単に処理できる必要があり(これが置き換えるデータベースには数百万のレコードがあります)、MSSqlServer上にあります
sql-server - MSSQL2005または2008の複数のID列の自動インクリメント
MS SQLに2つの異なるテーブル、たとえばユーザーとグループがあり、どちらもID列が必要です。2つのID列に自動増分を作成することは可能ですか?これら2つのテーブルに共通の情報を含む3番目のテーブルが必要であり、一意のレコードを識別したいと思います。
OracleにはSEQUENCEがあります。
それは可能ですか?
ありがとう、
マーティンピルチ
sql - 複数のテーブルで条件付きmysql結合を実行する最も効率的な方法は?(Yii phpフレームワーク)
私は5つのテーブルを持っています:
- tab_template
- template_group
- グループ
- ユーザー・グループ
- ユーザー
Tab_templateは、template_groupリレーショナルテーブルを使用してグループに編成されます。ユーザーは、user_groupリレーショナルテーブルを使用してグループに編成されます。グループはパブリックまたはプライベートにすることができます(テーブルのtinyintブール列を使用)。
次のいずれかであるすべてのtab_templatesを照会したいと思います。
- ユーザーと同じグループ内
- またはパブリックグループで
これが私の現在のクエリです:
SELECT *
FROM tab_template
t
LEFTJOINON 。= 。
左に参加し
ます。= 。
左から真
の場所に
参加します。= 0
OR
(。= 。
AND 。= 2)
GROUPBY 。; template_group
template_group
tab_template_id
t
id
group
template_group
tab_template_id
group
id
user_group
group
private
template_group
group_id
user_group
group_id
user_group
user_id
t
id
それは機能し、それ自体はSUPER遅いわけではありませんが、user_groupテーブルに参加する方法はハックです。
問題は、条件付きチェックのためにuser_groupテーブルに参加する必要があることですが、グループがプライベートでない場合にのみ、その条件付きチェックを実行する必要があります。
ONTRUE条件の3番目のLEFTJOINの代わりに、FROM句(FROM tab_template
t
、user_group
ug
)に別のテーブルを追加できることは知っていますが、YiiのActiveRecordクラスがDcCriteriaで機能するため、これはできません。 tステートメントのその部分を変更します。クエリの他の部分は編集できますが、FROM句は編集できません。ここでAPIをチェックしてください:http : //www.yiiframework.com/doc/api/CDbCriteriaだから、私は自分のようにuser_groupテーブルに参加しています。Yiiの専門家の中には、私がその問題を解決するのを手伝ってくれる人もいるかもしれませんが、とにかくテーブルを結合するのではなく、テーブルをFROMすることで、クエリが高速になるかどうかはわかりません。
どんな助けでも大歓迎です!ありがとう