Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 如何使用sql查询联接我的发票和发票产品表。。?_Mysql_Sql - Fatal编程技术网

Mysql 如何使用sql查询联接我的发票和发票产品表。。?

Mysql 如何使用sql查询联接我的发票和发票产品表。。?,mysql,sql,Mysql,Sql,我有两个表invoice和invoice product表,我想就每个invoice id加入我的两个表 我曾尝试编写sql查询,但它是错误的 SELECT invoice.invoice_id, invoice_product.product_name FROM invoice, invoice_product WHERE invoice.invoice_id = invoice_product.invoices_id 我想这样展示我的实际结果 Invoice_id | Invoice_n

我有两个表invoice和invoice product表,我想就每个invoice id加入我的两个表

我曾尝试编写sql查询,但它是错误的

SELECT invoice.invoice_id, invoice_product.product_name
FROM invoice, invoice_product
WHERE invoice.invoice_id = invoice_product.invoices_id
我想这样展示我的实际结果


Invoice_id | Invoice_name | Product_name                | Created Date
========== |============= |=============================|==============
   1       |    Test 1    |   Product1 ,product 2       | 2019-05-02
   2       |    Test 2    |    New Product ,New Product | 2019-05-02
发票
表格:

invoice\u产品
表格:


您需要使用一个
GROUP\u CONCAT
来获得这样的产品列表,按发票号分组。这将有助于:

SELECT i.invoice_id, i.invoice_name, GROUP_CONCAT(ip.product_name) AS products, i.created_at
FROM invoice i
JOIN invoice_product ip ON i.invoice_id = ip.invoices_id
GROUP BY i.invoice_id
输出:

invoice_id  invoice_name    products                        created_at
1           Test 1          Product 1,Product 2             2019-05-02 00:00:00
2           Test 2          Product New,Product New New     2019-05-02 00:00:00


请注意,使用逗号的隐式
JOIN
语法已被弃用一段时间,最好改为编写显式
JOIN
s。

您需要使用
GROUP\u CONCAT
来获得这样的产品列表,按发票号分组。这将有助于:

SELECT i.invoice_id, i.invoice_name, GROUP_CONCAT(ip.product_name) AS products, i.created_at
FROM invoice i
JOIN invoice_product ip ON i.invoice_id = ip.invoices_id
GROUP BY i.invoice_id
输出:

invoice_id  invoice_name    products                        created_at
1           Test 1          Product 1,Product 2             2019-05-02 00:00:00
2           Test 2          Product New,Product New New     2019-05-02 00:00:00

请注意,使用逗号的隐式
JOIN
语法已被弃用一段时间,最好改为编写显式
JOIN
s。

使用
group\u concat()

使用
group\u concat()


避免与实际语法连接,这太旧了。 我不建议使用非原子值,但
GROUP\u CONCAT
函数正在为您完成这项工作

SELECT invoice.invoice_id, GROUP_CONCAT(IP.product_name), I.created_at
FROM invoice AS I
JOIN invoice_product AS IP
    ON I.invoice_id = IP.invoices_id
GROUP BY IP.invoices_id

避免与实际语法连接,这太旧了。 我不建议使用非原子值,但
GROUP\u CONCAT
函数正在为您完成这项工作

SELECT invoice.invoice_id, GROUP_CONCAT(IP.product_name), I.created_at
FROM invoice AS I
JOIN invoice_product AS IP
    ON I.invoice_id = IP.invoices_id
GROUP BY IP.invoices_id

我正在使用mysql数据库和php.group\u concat…如果可能,请给我一个示例代码。我正在使用mysql数据库和php.group\u concat…如果可能,请给我一个示例代码。