2017-05-31 72 views
0

我有2个表product_sold, product_received。我有两个公共字段的表 product_sold表多查询得到两个表的相同结果

product_id | reference | sold_date 1 | For designing | 2017-02-01 2 | dshdshf | 2017-02-05

product_received表

product_id | reference | received_date 4 | stock updation | 2017-03-01 2 | stock review | 2017-03-05 1 | Stocks shipment | 2017-03-06

我想要得到的结果类似

Product Code | Reference | Date 19mm Alimin | Stocks shipment | 2017-03-06 19mm Alimin | For Designing | 2017-02-01 Alu Tape SC | Stock review | 2017-03-06 Alu Tape SC | dshdshf | 2017-02-05 9mm Sheet Pl | Stock updation | 2017-03-01

产品名称是在我的产品表whi我必须加入这两张表。我试图用mysqli_multi_query执行查询,但没有奏效。

我的产品表

product_id | product_name 1 | 19mm Alimin 2 | Alu Tape SC 3 | 10.5 mm 4 | 9mm Sheet Pl

+0

请告诉我们您的产品表的结构为好。 – FMashiro

+0

列产品代码不清楚数据来自哪里。 –

+0

我已经编辑了我的帖子,上面有产品表 – user3368088

回答

1

两个查询可能得到你的预期效果。 您需要JOIN和UNION ALL来组合这两个查询。

SELECT 
    product.product_name AS 'Product Code' 
, product_sold.reference AS 'Reference' 
, product_sold.sold_date AS 'Date' 
FROM 
product 
INNER JOIN 
product_sold 
ON 
product.product_id = product_sold.product_id 

UNION ALL 

SELECT 
    product.product_name AS 'Product Code' 
, product_received.reference AS 'Reference' 
, product_received.received_date AS 'Date' 
FROM 
product 
INNER JOIN 
product_received 
ON 
product.product_id = product_received.product_id 

或者

SELECT 
    product.product_name AS 'Product Code' 
, product_sold.reference AS 'Reference' 
, product_sold.sold_date AS 'Date' 
FROM 
product 
INNER JOIN 
product_sold 
USING product_id 

UNION ALL 

SELECT 
    product.product_name AS 'Product Code' 
, product_received.reference AS 'Reference' 
, product_received.received_date AS 'Date' 
FROM 
product 
INNER JOIN 
product_received 
USING product_id 
+0

非常感谢。我在其他表中还有2个字段。我已成功加入。非常感谢你。第一个查询对我来说非常合适。 – user3368088

+0

我想添加列名'Details',如果它来自'product_sold'表,它应该显示为'Sales',或者如果它来自'product_received',它必须显示'Purchase'。我怎样才能做到这一点? – user3368088

+0

我解决了! – user3368088

0

使用UNION:

SELECT product_id, reference, sold_date as date FROM product_sold 
UNION 
SELECT product_id, reference, received_date as date FROM product_received 

,或者使用UNION ALL得到重复的值了。

在回答您的编辑,如果你想与联接包含做到这一点:

SELECT `product`.`product_name`, a.* FROM 
    (SELECT product_id, reference, sold_date as date FROM product_sold 
    UNION 
    SELECT product_id, reference, received_date as date FROM product_received) AS a 
INNER JOIN product ON `product`.`product_id` = a.`product_id`; 
相关问题