在我的数据库中,我有一个表包含完整的产品列表,另一个表包含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字段成为我视图的主键。
谢谢!
答案 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;