SQLite - арифметика столбцов из трех разных таблиц (сумма, умножение, вычитание и т. Д.) - PullRequest
0 голосов
/ 30 мая 2018

Используя запрос SQLite, я пытаюсь выполнить арифметику со столбцами из разных таблиц, где я умножаю цены на продукты в различных группах на процент, соответствующий каждой группе в отдельной таблице:

< Products Table >
Column Z  Column X Column Y
Product 1 Price 1  Delivery A
Product 2 Price 2  Delivery B
Product 3 Price 3  Delivery A
Product 4 Price 4  Delivery A
Product 5 Price 5  Delivery B
Product 6 Price 6  Delivery C

< Delivery Table >
Column O  Column P
Delivery A Warehouse A
Delivery B Warehouse A
Delivery C Warehouse B

< Warehouse Percentage Table >
Column M Column N
Warehouse A  Percentage A
Warehouse B  Percentage B

< Results Table / View >
Column E  Column F
Product 1 Total 1 (Price 1 * Percentage A)
Product 2 Total 2 (Price 2 * Percentage B
Product 3 Total 3 (Price 3 * Percentage A)
Product 4 Total 4 (Price 4 * Percentage A)
Product 5 Total 5 (Price 5 * Percentage B)
Product 6 Total 6 (Price 6 * Percentage B)

Мне удалось выяснить, как выполнить арифметику для столбцов из той же таблицы, которая создает новое представление:

SELECT id,
    SUM(column_a*column_b)
    FROM table_1
    GROUP BY id

Мне также удалось объединить три таблицы:

SELECT *
  FROM table_1
       INNER JOIN
       table_2 ON table_1.column_1 = table_2.column_1
       INNER JOIN
       table_3 ON table_2.column_2 = table_3.column_2;

НоЯ не могу понять, как выполнить арифметику для двух столбцов из двух разных таблиц, соединенных третьей таблицей, такой как:

SUM(table_1.column_1*table_3.column_2)

Когда я добавляю эту строку кода в запрос, который присоединяетсявсе три таблицы, которые я получаю:

The SELECT statement could not be parsed. Please correct the query and retry. Details: Syntax error

Нет также никакого способа, которым я могу напрямую INNER JOIN table_1 к table_3, так как у них нет соответствующих значений, поэтому я должен присоединитьсячерез table_2.

1 Ответ

0 голосов
/ 31 мая 2018

Это решение довольно простое, но не в том случае, если вы новичок в sql, как я:

SELECT table_1.price * table_3.percentage
       INNER JOIN
       table_2 ON table_1.column_1 = table_2.column_1
       INNER JOIN
       table_3 ON table_2.column_2 = table_3.column_2;

Кажется, что любая арифметика в sql должна выполняться в операторе SELECT.

Более сложный синтаксис арифметики, приведенный ниже, поставил меня на неверный курс, хотя на самом деле решение было намного проще:

SELECT id,
    SUM(column_a*column_b)
    FROM table_1
    GROUP BY id 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...