1

製品テーブルがあり、各製品にはカテゴリ フィールドがあります(これは変更する必要がなく、そのままデータを読み取る必要があります)、製品テーブルから、一意のカテゴリのみでカテゴリ テーブルを更新したかった(空のカテゴリを処理するために a も使用しIFNULLます)、これはこれまでのところ機能するものです:

string query = "INSERT INTO categories (name) 
                    SELECT DISTINCT(IFNULL(category, \"Uncategorized\")) AS category_name
                    FROM products 
                        WHERE NOT EXISTS (
                            SELECT name FROM categories 
                                WHERE name = category_name)";

上記のクエリを使用すると、一意のカテゴリ フィールドでカテゴリを更新でき、実行する必要があるたびに、存在しないカテゴリのみがテーブルに追加されます。

しかし、上記に加えて、次のように挿入された各カテゴリにプロファイル ID を含める必要もありますが、これは機能しません。

string query = "INSERT INTO categories (profile_id, name)
                    SELECT " + profileId.ToString() + ",
                        DISTINCT(IFNULL(category, \"Uncategorized\")) AS category_name
                    FROM products 
                        WHERE NOT EXISTS (
                            SELECT name FROM categories 
                                WHERE name = category_name 
                                    AND profile_id = @profileId)";

クエリでこれを達成する方法はありますか?

上記は私にメッセージを与えます:

SQLite error near "DISTINCT": syntax error

SqliteMan エラー:

Query Error: near "DISTINCT": syntax error Unable to execute statement

私がはっきりしていない場合は教えてください。何についてもっと明確にする必要がありますか。

4

1 に答える 1