MySQLのクエリに問題があり、答えを探す場所がたくさんあります。私が欲しいのは、テーブル2と3の列2と2のデータを使用して、テーブル1の列2と3にデータを挿入することです。
次の表があります。
Table1 (products):
Column1 = productId (Autoincrementing int)
Column2 = fkCategory (int, Foreign key pointing to the categoryId)
Column3 = fkBrand (int, Foreign key pointing to the brandId)
Table2 (categories):
Column1 = categoryId (autoincrementing int)
Column2 = category (Varchar)
Table3 (brands):
Column1 = brandId (Autoincrementing int)
Column2 = brand (Varchar)
次のクエリを実行すると、すべてが正しく行われ、テーブル1の列1(自動インクリメントキー)と列2(必要なデータ)にデータを含む行が挿入されますが、列3にはもちろん何も挿入されません。
INSERT INTO products (fkCategory)
Select categories.categoryId
FROM categories
WHERE category = 'Bluser';
ここで、テーブル2と3のデータを使用して、同じクエリ内のテーブル1の同じ行の列2と列3に値を追加し、次のクエリを作成しようとします。これは私にメッセージを与えます:不明な列 'products.fkBrand'
INSERT INTO products (fkCategory, fkBrand)
Select categories.categoryId, brands.brandId
FROM categories
INNER JOIN brands ON brands.brandId = products.fkBrand
WHERE category = 'Bluser' and brand = 'Ganni';
また、次のクエリを試しました。
INSERT INTO products (fkCategory, fkBrand)
Select categories.categoryId, brands.brandId
FROM products
INNER JOIN categories ON categories.categoryId = products.fkCategory
INNER JOIN brands ON brands.brandId = products.fkBrand
WHERE category = 'Bluser' and brand = 'Ganni';
これは実行時に問題を引き起こしませんが、table1に値を追加しません。
私はちょっと迷っています。私の問題はWhere句またはそれに参加する方法にあると思います。他にもたくさんのクエリを試しましたが、質問スレッドにあまり多くのコードを追加したくありませんでした。
どんな助けでも大歓迎です:)。いい日!
挿入前はテーブルが空であり、結果としてセットが空になるため、テーブル製品に結合しないでください。次のクエリは、テーブル2と3の相互結合を実行して、製品に挿入する結果セットを生成します。
INSERT INTO products (fkCategory, fkBrand)
Select c.categoryId, b.brandId
FROM categories c,brands b
WHERE c.category = 'Bluser' and b.brand = 'Ganni';
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加