0

現在、2 つの文字列クエリがあります。

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'

と、

SELECT * FROM hmdb WHERE hmdb MATCH 'content:red OR keyword:red v_other:true'

そして、これは私がそれぞれの結果を示す方法です:

            public void searchRecords()
            {
            SQLiteConnection m_dbConnection;
            m_dbConnection = new SQLiteConnection("Data Source=hmdb.sqlite;version=3;");

            try
            {
                m_dbConnection.Open();
                SQLiteDataAdapter db = new SQLiteDataAdapter(queryString, m_dbConnection);
                DataTable dt = new DataTable("hmdb");
                db.Fill(dt);
                listView1.ItemsSource = dt.DefaultView;
            }
            catch (Exception e)
            {
                string ex = e.ToString();
                System.Windows.MessageBox.Show(ex);
            }
            finally
            {
                if (m_dbConnection != null)
                {
                    m_dbConnection.Close();
                    m_dbConnection.Dispose();
                }

            }
        }

ここで、listView に表示するために、これらの両方のクエリで共通の行を取得する方法を知りたいと思いました。さらに良いことに、クエリを 1 つだけ実行して目的の結果を得る方法はありますか?

4

4 に答える 4

2

私はあなたが探していると思います:

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'
INTERSECT
SELECT * FROM hmdb WHERE hmdb MATCH 'content:red OR keyword:red v_other:true'

INTERSECT キーワードについては、こちらで説明しています

于 2013-08-25T13:02:00.297 に答える
0

共通行の場合、両方のクエリに共通することだけを意味しますか? 次に、AND を使用します。

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'
AND (hmdb MATCH 'content:red OR keyword:red v_other:true')

クエリ 1 が単独で一致し、クエリ 2 が単独で一致する行とともに、両方のクエリで共通の行を表示する場合は、UNION を使用します。</p>

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'
UNION
SELECT * FROM hmdb WHERE hmdb MATCH 'content:red OR keyword:red v_other:true'
于 2013-08-25T13:12:55.913 に答える
0

次の 2 つのクエリがあります。

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'
SELECT * FROM hmdb WHERE hmdb MATCH 'content:red OR keyword:red v_other:true'

where 条件を組み合わせて、AND句 (およびロジックの一貫性を保つための括弧) を使用する代わりに 1 つのクエリを使用するだけです。

SELECT * FROM hmdb 
WHERE shamsidate MATCH '1376/05/24 1385/11/12' 
      AND (hmdb MATCH 'content:red OR keyword:red v_other:true')
于 2013-08-25T13:01:40.817 に答える
0

andクエリに条件を設定するのが最善だと思います。

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12' and hmdb MATCH 'content:red OR keyword:red v_other:true'

2 つの異なるテーブルだった場合は、 を使用できたはずJoinsです。

于 2013-08-25T13:01:56.147 に答える