SQL视图中的唯一列

时间:2015-02-25 11:56:44

标签: php mysql sql join view

在我的数据库中,我有一个表包含完整的产品列表,另一个表包含x轴上相同的产品列表,y轴上有客户列表,每个表的值都是产品可以是1或0,具体取决于客户是否可以查看该产品。我的SQL看起来像这样:

SELECT products.product_code, products.product_type, products.product_category, products.product_title, products.product_description
FROM product_lists
INNER JOIN products
ON product_lists.product_code=products.product_code
WHERE product_lists.customer="1"
ORDER BY products.product_code

我的问题是,我想为每个客户创建一个这个结果的视图,作为客户产品表使用,但是当我创建它时,我收到消息"该表不包含唯一列。网格编辑,复选框,编辑,复制和删除功能不可用。"即使product_code字段在products表和product_lists表中都设置为主键。

如何创建使用其创建的表中的主键的连接/视图?简而言之,我希望product_code字段成为我视图的主键。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为问题是join。您可以通过将条件移动到where子句来解决此问题。 MySQL不允许from中的子查询,但它在where

SELECT p.product_code, p.product_type, p.product_category, p.product_title, p.product_description
FROM products p
WHERE EXISTS (SELECT 1
              FROM product_lists pl
              WHERE pl.product_code = p.product_code AND
                    pl.customer = 1
             )
ORDER BY p.product_code;