2013-02-04 56 views
0

我有三个表:连接记录随机

categories (id) 
product_models(id, category_id) 
products(id, product_id, category_id) 

有每个表(Lorem存有内容)的记录,我想连接的数据。
我已经改变了product_models,执行这个查询:

update product_models 
    set category_id = (select id from categories order by RAND() limit 1) 

如何使用单个查询,将所有的产品映射到产品模型并更新类别?

回答

1

您应该根据需要向表中添加约束和引用,以便在更新一个表时其他表也会更新。

+0

我明白,并会得到它,在这个应用程序项目可以是孤儿。 – yossi

1

假设你的第三个表结构(ID,product_model_id,CATEGORY_ID),另一种假设是,你有一个复合外键(product_model_id,CATEGORY_ID),那么你就必须更新第三个表像下面

UPDATE products P 
INNER JOIN (SELECT id, category_id from product_models) M 
ON P.product_id = M.id 
SET P.category_id = M.category_id 
+0

似乎像这个查询将更新只有一个连接,产品之间的类别。这是一个答案,我寻找一个连接所有3个表的单个查询 – yossi