Как объединить таблицу «Мой счет-фактура» и «Счет-фактура» с помощью запроса sql ..? - PullRequest
0 голосов
/ 02 мая 2019

У меня есть две таблицы счетов-фактур и таблица счетов-фактур, я хочу объединить две таблицы в отношении каждого идентификатора счета-фактуры.

Я пытался написать 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 таблица:

enter image description here

invoice_product таблица:

enter image description here

Ответы [ 3 ]

2 голосов
/ 02 мая 2019

Вам нужно использовать GROUP_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

Демонстрация на dbfiddle

Обратите внимание, что неявный синтаксис JOIN, использующий запятую, уже давно устарел, вместо него лучше написать явный JOIN s.

1 голос
/ 02 мая 2019

Избегайте соединения с вашим фактическим синтаксисом, это слишком старый. Я не рекомендую иметь неатомарные значения, но функция GROUP_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
0 голосов
/ 02 мая 2019

использование group_concat()

SELECT invoice.invoice_id, group_concat(invoice_product.product_name)
FROM invoice join  invoice_product
on invoice.invoice_id = invoice_product.invoices_id
group by invoice.invoice_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...