データベースに2つのSQLテーブルがあるというアイデアを実装しようとしています。
フィールドを持つテーブルInfo
とフィールドを持つNationality
他のテーブル。Exclusion
Keyword
`Info.Nationality` `Exclusion.Keyword`
|British| |France|
|resteraunt de France| |Spanish|
|German|
|Flag Italian|
|Spanish rice|
|Italian pasta
|Irish beef|
私のWebアプリケーションでは、GridView4
とを作成していてDataTable
、SQLコマンドを入力しています。SqlDataAdapter
GridView4
SELECT DISTINCT Info.Nationality WHERE Exclusion.Keyword NOT LIKE '%Spanish%'
そのSQLステートメントInfo.Nationality
は、スペイン語を含まないすべての個別のレコードを取得します。
私が現在行っているのは、vb.netにあるWebアプリで、2つの異なるデータを追加してGridViews
いることです。それぞれに各テーブルのデータがあります。つまりGridView2
、DISTINCT Info.Nationality
上記の結果を表示するために別のテーブルを追加 します。GridView3
Exclusion.Keyword
GridView4
SQL command
Info.Nationlity
アイデアは、のキーワード制約によって抑制されていないすべての個別のレコードを取得することExclusion.keyword
です。したがって、上記のSqlコマンドから、はGridView4
「スペイン語」という単語を含まないすべてのレコードを取得します。
私はこれらすべてをネストされたfor
ループで実行しています。最初のループでは、Info.Nationality
たとえばから各レコードを1つずつfor each row As DataRow in Me.GridView2.Rows()
取得し、の最後まで続く2番目のforループと比較しExclusion.Keyword
ますFor i=0 To Gridview3 - 1
。
問題は、そのsqlステートメントで、比較する単語を明示的に指定する必要があることです。のレコードを追加し、Exclusion.Keyword
その間のキーワードInをtheの名前にString
置き換えてから、名前にパラメータを割り当ててみました。ただし、これは機能していません。文字列の最後のレコードと比較し、最初のレコードを無視しているだけです。Spanish
NOT LIKE
String
Keywords
cmd.parameter.addwithvalue(@String, Keywords)
このすべての背後にある考え方は、のキーワードを含まないのすべてのレコードInfo.Nationality
を表示することです。GridView4
Exclusion.Keyword
これを行うためのより簡単またはより効率的な方法はありますか?私は考えていましたInner Join with a Like command
が、それは私の問題ではありません。私の問題は、各レコードを1つずつ比較してInfo.Nationlity
、一致しないレコードをExclusion.keyword
取得し、一致するレコードを破棄するにはどうすればよいかということです。
次に、これらの変更を反映したり、変更に影響を与えたりせずに、変更のみGridview4
にレコードを編集するにはどうすればよいですか。 Info.Nationality
Inserting to Exclusion.Keyword
ToString()
後に追加して解決しましたasp.netWebText
アプリでこれを試しましたが、機能しませんでした:(解決済み)
`SELECT DISTINCT Nationality
FROM Info Where NOT EXISTS(SELECT * FROM Exclusion WHERE Info.Nationality LIKE '%' + @GridView +'%')`
`cmd.parameters.AddwithValue("@GridView", GridView3.Rows(i).Cells(0).Text.ToString())`
GridView3
ここにExclusion.Keywords
データがあります。
これに関するあなたの提案や考えを本当に感謝します。