【问题标题】:MySQl query issues for adding data to table 1 from table 2 and 3 with a joinMySQl 使用连接从表 2 和表 3 向表 1 添加数据的查询问题
【发布时间】:2014-05-16 14:42:44
【问题描述】:

我在 MySQL 中的查询有问题,我在很多地方寻找答案。 我想要的是使用表 2 和 3 第 2 列和第 2 列中的数据将数据插入 Table1 第 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 子句或我加入它的方式上。我已经尝试了很多其他查询,但我不想在问题线程中添加太多代码。

非常感谢任何帮助:)。美好的一天!

【问题讨论】:

    标签: java mysql sql foreign-keys inner-join


    【解决方案1】:

    您不应该加入表格产品,因为在插入之前表格是空的,它会导致一个空集。以下查询执行表 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';
    

    【讨论】:

    • 太棒了。它工作得很好。谢谢 :).. 实际上,我的想法是我不能创建一个包含多个表的 FROM 子句,但是你去吧。那么就不需要加入了。
    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多