これが繰り返されないことを願っています。検索を確認しましたが、これに対する明確な答えが見つからないようです。
主キーが に設定されているテーブルがありますUniqueIdentifier
。varchar
また、最初のテーブルの GUID を含むクエリ文字列を含む URL を基本的に含む列を 持つ別のテーブルもあります。
だから私の2つのテーブルは次のようになります:
状態テーブル
StateID StateName
EB06F84C-15B9-4397-98AD-4A63DA2A238E Active
URL テーブル
URL
page.aspx?id=EB06F84C-15B9-4397-98AD-4A63DA2A238E
私がやろうとしているのは、一緒に結合しURLTable
、StateTable
ON の値がStateID
URL テーブルの URL に含まれていることです。私は本当に結合を理解していません。1 つのテーブルを選択するだけで、 の値でフィルタリングしようとしましたStateTable
。私はこのようなことを試みました:
SELECT *
FROM URLTable
WHERE EXISTS
(SELECT *
FROM StateTable
WHERE URL LIKE '%' + StateID + '%')
それは私が比較していると言っているので、それでもうまくいきませuniqueidentifier
んvarchar
。
like コマンドを使用して 2 つのテーブルを結合する方法はありますか? like コマンドが 2 つの互換性のない変数を比較していませんか?
ありがとうございました!!
更新: 私が言及すべきいくつかの追加事項を追加させてください。クエリは、分析レポートを作成するためのものです。テーブルは CMS 分析パッケージの一部であるため、テーブル構造を更新または変更することはできません。
第二に、これらのテーブルはサイト分析をキャプチャしているため、非常に大量のトラフィックが表示されるため、パフォーマンスが非常に問題になります。3 つ目は、私の例では id= と言いましたが、 のように複数の値が存在する可能性があることid=guid&user=guid&date=date
です。
更新 2: 恐ろしいことに気付いたもう 1 つのことは、クエリ文字列で GUID からダッシュが削除されている場合とそうでない場合があることですUniqueidentifier
。私はそれを使用して動作するようになりました
REPLACE('-','',CONVERT(varchar(50), a.AutomationStateId))
しかし、URL のテーブルが非常に大きいため、パフォーマンスの問題が非常に心配です。これが獣の性なのかもしれませんが、私にできることがない限りは。