Как запросить несколько таблиц, как это в MYSQL

0

Предположим, у меня есть несколько таблиц в моей базе данных. Первая из них - таблица DA, имеющая три столбца, и я хочу запросить таблицу других на основе PROJECT_ID.

Изображение 174551

Следующая таблица WORK. Я хочу рассчитать SUM из work_bonus и work_salary по конкретному da_id. Изображение 174551

Следующая таблица - таблица расходов

Изображение 174551

Следующий - таблица продуктов

Изображение 174551

Последняя - сводная таблица. Я хочу напечатать DA, как ниже этой таблицы. Это означает, что я хочу найти da на основе project_id "15", поэтому я получу два da_id из таблицы da, т.е. da_id 1 и 2. Теперь в таблице работ, расходов и продуктов есть поле da_id. Поэтому я хочу распечатать сводку DA из таблицы работ, расходов и продуктов. Здесь, в таблице WORK, DA_ID 1 имеет две записи, то есть work_id 1 и 3. Я хочу суммировать ее значение WORK_BONUS и WORK_SALARY на основе DA_ID, что означает, что общий WORK_BONUS из DA_ID 1 будет равен 40, а WORK_SALARY из DA_ID 1 будет 400. Как и в этом случае, rest расчет таблицы будет таким же. Вот финальная таблица, которую я хочу. Так что, пожалуйста, помогите мне рассчитать результат в mysql? Спасибо

Изображение 174551

Текст version-

DA TABLE
-------------------------------------------------
|   DA_ID     |    PROJECT_ID  |      DA_DATE    |
-------------------------------------------------
|    1        |       15        |       8/7/18   |
-------------------------------------------------
|    2        |       15        |       4/7/18   |
-------------------------------------------------
|    3        |       14        |       6/7/18   |
-------------------------------------------------



WORK TABLE
--------------------------------------------------------------------
|   WORK_ID   |     DA_ID      |    WORK_BONUS  |      WORK_SALARY   |
--------------------------------------------------------------------
|    1        |       1        |       10       |           100      |
--------------------------------------------------------------------
|    2        |       2        |       20       |          200       |
-------------------------------------------------------------------
|    3        |       1        |       30       |          200       |
--------------------------------------------------------------------



EXPENSE TABLE
-----------------------------------------------------
|   EXP_ID    |    DA_ID        |      EXP_TOTAL    |
-----------------------------------------------------
|    1        |       1         |       10          |
-----------------------------------------------------
|    2        |       2         |       20          |
-----------------------------------------------------
|    3        |       1         |       30          |
-----------------------------------------------------



PRODUCT TABLE
-------------------------------------------------------------
|   PRODUCT_ID    |    DA_ID        |      PRODUCT_TOTAL    |
-------------------------------------------------------------
|       1         |       1         |       5               |
-------------------------------------------------------------
|       2         |       2         |       10              |
-------------------------------------------------------------
|       3         |       1         |       15              |
-------------------------------------------------------------


SUMMARY TABLE
----------------------------------------------------------------------------------------
|   SUMMARY_ID    |   DA_ID   |   TOTAL_BONUS  |   TOTAL_EXPENSE   |   TOTAL_PRODUCT   |
----------------------------------------------------------------------------------------
|       1         |     1     |        40      |        400        |         20        |
----------------------------------------------------------------------------------------
|       2         |     2     |        20      |        200        |         10        |
----------------------------------------------------------------------------------------
  • 0
    Публикация данных в виде текста означает, что мы можем скопировать их для использования. Публикация в виде изображений означает, что мы должны печатать - некоторым (например, мне) не рекомендуется отвечать исключительно из-за этого.
  • 0
    Мне очень жаль, я думал, что это поможет кому-то понять.
Показать ещё 4 комментария
Теги:

2 ответа

0
Лучший ответ

Есть два способа добиться этого с помощью запроса. Может быть более подходящим способом

Способ 1

SELECT D.DA_ID,
    (SELECT SUM(WORK_BONUS) FROM 'WORK' W WHERE W.DA_ID = D.DA_ID) as TOTAL_BONUS,
    (SELECT SUM(WORK_SALARY) FROM 'WORK' W WHERE W.DA_ID = D.DA_ID) as TOTAL_SALARY,
    (SELECT SUM(EXP_TOTAL) FROM EXPENSE E WHERE E.DA_ID = D.DA_ID) as TOTAL_EXPENSE,
    (SELECT SUM(PRODUCT_TOTAL) FROM PRODUCT P WHERE P.DA_ID = D.DA_ID) as TOTAL_PRODUCT
FROM DA as D left join WORK as W on D.DA_ID = W.DA_ID
WHERE D.PROJECT_ID = 15
GROUP BY D.DA_ID;

Путь 2

SELECT D.DA_ID, SUM(WORK_BONUS) as TOTAL_BONUS, SUM(WORK_SALARY) as TOTAL_SALARY, 
    (SELECT SUM(EXP_TOTAL) FROM EXPENSE E WHERE E.DA_ID = D.DA_ID) as TOTAL_EXPENSE,
    (SELECT SUM(PRODUCT_TOTAL) FROM PRODUCT P WHERE P.DA_ID = D.DA_ID) as TOTAL_PRODUCT
FROM DA as D left join WORK as W on D.DA_ID = W.DA_ID
WHERE D.PROJECT_ID = 15
GROUP BY D.DA_ID;
  • 0
    @Ashis Biswas: если этот ответ полезен, вы также можете проголосовать за него (в дополнение, чтобы проверить его как принятый ответ), пожалуйста, также прочитайте: Почему голосование важно?
1

Этот запрос поможет вам:

SELECT * FROM 
(
    SELECT sum(WORK_BONUS) AS TOTAL_BONUS, 
           sum(WORK_SALARY) AS TOTAL_SALARY 
    FROM WORK WHERE DA_ID = ?)
) t1,
(
    SELECT sum(EXP_TOTAL) as TOTAL_EXPENSE 
    FROM EXPENSE WHERE DA_ID = ?
) t2, 
(
    SELECT sum(PRODUCT_TOTAL) AS TOTAL_PRODUCT 
    FROM PRODUCT WHERE DA_ID = ?
);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню