смешать результат 2 запросов в одной таблице? - PullRequest
0 голосов
/ 14 декабря 2018

Я новичок в SQL, могу ли я смешать результат двух запросов в одной таблице с разными атрибутами?

Ниже 3 таблиц моей базы данных и результата, который я хочу получить.Возможно ли это?

клиент

|id|name|adress|
----------------
|1 |a   |x     |
|2 |b   |y     |

заказ

|id|client.id|product|date     |
--------------------------------
|1 |1        |px     |2018-01-1|
|2 |1        |py     |2018-05-1|
|3 |2        |px     |2018-06-1|

оплата

|id|client.id|amount|date     |
-------------------------------
|1 |1        |1000  |2018-03-1|
|2 |2        |500   |2018-09-1|

Вывод

|name |order.id |product |pay.id |amount |date     |
----------------------------------------------------
|a    |1        |px      |-      |-      |2018-01-1|
|a    |-        |-       |1      |1000   |2018-03-1|
|a    |2        |py      |-      |-      |2018-05-1|
|b    |3        |px      |-      |-      |2018-06-1|
|b    |-        |-       |2      |500    |2018-09-1|

1 Ответ

0 голосов
/ 14 декабря 2018

Отредактировано для доступа.Используйте UNION для 2 подзапросов:

SELECT * FROM (
  SELECT client.name, order.id AS orderid, order.product AS product, 
    "-" AS payid, "-" AS amount, order.date AS [date]
  FROM client INNER JOIN [order] ON client.id = order.clientid
  UNION
  SELECT client.name, "-" AS orderid, "-" AS product, 
    pay.id AS payid, pay.amount AS amount, pay.date AS [date]
  FROM client INNER JOIN [pay] ON client.id = pay.clientid
  )
ORDER BY name, date

результат:

name    orderid product payid   amount  date
a         1       px      -       -     2018-01-1
a         -       -       1      1000   2018-03-1
a         2       py      -       -     2018-05-1
b         3       px      -       -     2018-06-1
b         -       -       2      500    2018-09-1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...