データベースに2つのSQLテーブルがあるというアイデアを実装しようとしています。
フィールドを持つテーブルInfoとフィールドを持つNationality他のテーブル。ExclusionKeyword
`Info.Nationality` `Exclusion.Keyword`
|British| |France|
|resteraunt de France| |Spanish|
|German|
|Flag Italian|
|Spanish rice|
|Italian pasta
|Irish beef|
私のWebアプリケーションでは、GridView4とを作成していてDataTable、SQLコマンドを入力しています。SqlDataAdapterGridView4
SELECT DISTINCT Info.Nationality WHERE Exclusion.Keyword NOT LIKE '%Spanish%'
そのSQLステートメントInfo.Nationalityは、スペイン語を含まないすべての個別のレコードを取得します。
私が現在行っているのは、vb.netにあるWebアプリで、2つの異なるデータを追加してGridViewsいることです。それぞれに各テーブルのデータがあります。つまりGridView2、DISTINCT Info.Nationality上記の結果を表示するために別のテーブルを追加 します。GridView3Exclusion.KeywordGridView4SQL 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置き換えてから、名前にパラメータを割り当ててみました。ただし、これは機能していません。文字列の最後のレコードと比較し、最初のレコードを無視しているだけです。SpanishNOT LIKEStringKeywordscmd.parameter.addwithvalue(@String, Keywords)
このすべての背後にある考え方は、のキーワードを含まないのすべてのレコードInfo.Nationalityを表示することです。GridView4Exclusion.Keyword
これを行うためのより簡単またはより効率的な方法はありますか?私は考えていましたInner Join with a Like commandが、それは私の問題ではありません。私の問題は、各レコードを1つずつ比較してInfo.Nationlity、一致しないレコードをExclusion.keyword取得し、一致するレコードを破棄するにはどうすればよいかということです。
次に、これらの変更を反映したり、変更に影響を与えたりせずに、変更のみGridview4にレコードを編集するにはどうすればよいですか。 Info.NationalityInserting 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データがあります。
これに関するあなたの提案や考えを本当に感謝します。