Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 需要数据的联接查询_Mysql - Fatal编程技术网

Mysql 需要数据的联接查询

Mysql 需要数据的联接查询,mysql,Mysql,我有以下几张桌子 A) 产品免费发行 pfi_id pfi_lo_id 14966 57 B) 产品\免费\发布\详细信息 pfd_id pfd_pfi_id pfd_pr_price 30158 14966 677.97 30157 14966 677.97 C) 产品免费发布审核 pa_id pa_pfi_id pa_issue_qty pa_missing_extra 3421 14966 2

我有以下几张桌子

A) 产品免费发行

pfi_id  pfi_lo_id
14966    57        
B) 产品\免费\发布\详细信息

pfd_id pfd_pfi_id pfd_pr_price
30158  14966         677.97
30157  14966         677.97
C) 产品免费发布审核

pa_id pa_pfi_id pa_issue_qty  pa_missing_extra
3421  14966      2                  +8
3420  14966      3                  +7
这里,标签产品免费发布的主键pfi\U id产品免费发布产品免费发布审核标签中的外键

需要复制数据的联接查询,如-

pfi_id  pfi_lo_id pfd_id pfd_pfi_id pfd_pr_price pa_id pa_pfi_id pa_issue_qty  pa_missing_extra
14966    57        30158  14966         677.97     3421  14966      2                  +8
14966    57        30157  14966         677.97     3420  14966      3                  +7
我尝试了这个查询(1)

它们返回的数据如下所示

   pfi_id   pfi_lo_id  pfd_id  pfd_pfi_id   pfd_pr_price   pa_id     pa_pfi_id  pa_issue_qty    pa_missing_extra 
14996   57         30157    14996           677.97      3420      14996         3               +7
14996   57         30158    14996           677.97      3420      14996         3               +7
pfi_id  pfi_lo_id   pfd_id  pfd_pfi_id  pfd_pr_price    pa_id   pa_pfi_id   pa_issue_qty    pa_missing_extra    
14996   57          30157   14996           677.97           3420    14996              3               +7
14996   57          30157   14996           677.97           3421    14996              2               +8
还有这个(2)

然后返回如下数据

   pfi_id   pfi_lo_id  pfd_id  pfd_pfi_id   pfd_pr_price   pa_id     pa_pfi_id  pa_issue_qty    pa_missing_extra 
14996   57         30157    14996           677.97      3420      14996         3               +7
14996   57         30158    14996           677.97      3420      14996         3               +7
pfi_id  pfi_lo_id   pfd_id  pfd_pfi_id  pfd_pr_price    pa_id   pa_pfi_id   pa_issue_qty    pa_missing_extra    
14996   57          30157   14996           677.97           3420    14996              3               +7
14996   57          30157   14996           677.97           3421    14996              2               +8

如果您想加入表,比如product_free_issue和product_free_issue_detail,pfi_id 14966应该在这两个表中。如果键是不同的,那么将它们连接起来是没有意义的,因为您混淆了示例数据中的ID。请检查
pfd\u pfi\u id
pa\u pfi\u id
。这里只有14966,但在结果中,您将14966与14988结合起来。我认为这是不可取的。此外:您真的希望在结果中包含
pfd\u id
pa\u id
?他们似乎没有直接关系。如果
pfi_id
14999有两个
pfd_id
1和2,以及两个
pa_id
3和4,那么您已经生成了四个结果行:14999/1/3、14999/1/4、14999/2/3、14999/2/4。我已经编辑了您的帖子,将查询显示为代码,这使其更具可读性,重新打开您的帖子还需要一次投票:)这只是我的表格示例,因为实际表格有许多列。是的,我还需要pfd_id和pa_id。是的,表中有很多条目,比如14988,但我在这里解释14966,只是为了得到上面的结果。这是返回4条记录多次重复数据。但对于上面的示例,我只需要2条记录。
SELECT pfi.pfi_id,
       pfi.pfi_lo_id,
       pfid.pfd_id,
       pfid.pfd_pfi_id,
       pfid.pfd_pr_price,
       pfia.pa_id,
       pfia.pa_pfi_id,
       pfia.pa_issue_qty,
       pfia.pa_missing_extra
FROM product_free_issue pfi
INNER JOIN product_free_issue_detail pfid
ON pfi.pfi_id=pfid.pfd_pfi_id
INNER JOIN product_free_issue_audit pfia
ON pfi.pfi_id=pfia.pa_pfi_id