Php 从三个表中获取数据,其中库表位于

Php 从三个表中获取数据,其中库表位于,php,mysql,select,query-optimization,Php,Mysql,Select,Query Optimization,我有三张桌子: 表user\u产品 user_id | product_specific_id | order_no 1 | 1 | 1 1 | 2 | 1 1 | 3 | 2 表products\u库 product_specific_id | product_id 1 | 3 2

我有三张桌子:

user\u产品

user_id | product_specific_id | order_no
   1    |         1           |    1
   1    |         2           |    1
   1    |         3           |    2
products\u库

product_specific_id | product_id
   1                |    3
   2                |    3
   3                |    1
产品名称

product_id | name
   1       |    prod1
   2       |    prod2
   3       |    prod3
数据库中的每个产品都有唯一的
产品id
。但当用户订购任何产品时,他可以对其进行修改,因此我创建了
产品特定的\u id
,我在
用户产品
中使用该id,以及表
产品库
中,我可以将每个唯一的
产品特定的\u id
转换为基本
产品id

现在,每个
产品特定的\u id
都有相关的
产品id
的名称,我将其存储在表
产品名称中

现在,我需要为特定的
用户id
订单号显示每个
产品特定id
的名称

预期结果应如下所示:

user_id | order_no | product_specific_id | name
   1    |    1     |           1         | prod3
   1    |    1     |           2         | prod3
我能够适应两个查询:首先,我从
用户产品
中选择
产品特定id
列表,然后嵌套
选择

SELECT name 
FROM product_names 
WHERE product_id IN (SELECT product_id 
                     FROM products_library 
                     WHERE product_specific_id IN (...)

但是,是否有可能将它的所有内容都放在一个查询中?我不知道怎样才能做到这一点,如果有的话。另外,我不确定像这样的嵌套查询一开始是好还是坏。也许在两个查询中得到它就可以了,而嵌套查询太多是个坏主意?

您可以使用justjoin尝试以下方法

select user_id,order_no,u.product_specific_id,name
from user_products u join products_library p on u.product_specific_id=p.product_specific_id
join product_names pn on p.product_id=pn.product_id
where user_id=1 and order_no=1

嘿,这不仅是可能的,而且也没那么复杂。多谢各位!请在这里做一点修改:
=>
上加入产品名称在
@Zorann上加入产品名称,我已经修改了-你现在可以检查了