以下四个表的mysql查询是什么

以下四个表的mysql查询是什么,mysql,sql,Mysql,Sql,我有四张桌子 用户: 客户: client_id client_name products 1 tom cake, patties 2 pet cookie, cake 产品: product_id product_name 1 cake 2 cookie 3 patties 报告: report_id product_id 1

我有四张桌子

用户:

客户:

client_id   client_name    products
1            tom          cake, patties 
2            pet          cookie, cake
产品:

product_id  product_name
1            cake
2            cookie
3            patties
报告:

report_id   product_id 
1              1
2              3
3              2
4              1
5              3
如果Ravi登录,则他只能看到如下报告:

report_id   product_id 
1               1
3               2
4               1

我只需要在“Client”表中使用MySQL查询,而不需要保存“product”的多个值。将其拆分,只放入“product id”,而不放入实际的产品值,这就是为什么要使用表“product”。您的表“client”不在中。因此,如果可能,请更改表的结构

我同意Simemon的回答,您需要规范化您的DB表

然后,如果您只想使用这个表结构,您也可以试试这个

select * from reports where product_id in (select product_id from products where product_name in (select products from clients where client_id = (select client_id from users where username = 'ravi' limit 1)))

我还没有测试过这个。如果有任何错误,请告诉我,我会检查。

客户机
表一分为二<代码>客户端
客户端产品
。您的
产品
列的架构不正确,请将其拆分,以包含单个值!!!但是我不想改变设计或结构。您是否在MySQL中创建了表,因为如果没有1NF,几乎不可能创建数据并将其插入表中。所以,最好的选择是更改结构。我会尝试更改结构。只需更改结构,然后您就可以使用mysql嵌套选择查询来检索所需的信息。如果你认为我回答了你的问题,请勾选“正确答案”
select * from reports where product_id in (select product_id from products where product_name in (select products from clients where client_id = (select client_id from users where username = 'ravi' limit 1)))