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上加入产品名称,我已经修改了-你现在可以检查了