2015-05-11 9 views
0

Я хочу сделать пару математических операций, используя разные столбцы из разных таблиц.Математические операции с использованием MySQL

Скажем, у меня есть две таблицы А & B:

Value  Size Pack  
----------------------------------------- 
234567  10  1  
234589  20  1  
234561  30  2  

B

Value  Quantity Amount 
----------------------------------------- 
234567  5   200  
234589  10   300  
234561  8   150 

Теперь я хотел бы знать, как сделать следующее:

NEWCOLUMN (помещается в таблицу B) = Am р а ф/(размер * Упаковка * Количество)

и отображать результат на новый столбец в таблице В.

Я попытался налево объединять обе таблицы для того, чтобы получить все столбцы в одну таблицу, но Я не знаю, куда идти оттуда. Кроме того, мой ПК действительно полезен, и я полагаю, что мне нужно добавить FK, чтобы он работал?

Это пример того, что я до сих пор:

SELECT * 
FROM `B` 
LEFT JOIN `A` 
ON `B`.`Value`=`A`.`Value` 

Я попытался исследовать это в нескольких веб-сайтов, но не смогли найти однозначного ответа.

ответ

0

Вы попробовали?

SELECT *, (`B`.`Amount`/(`A`.`Size` * `A`.`Pack` * `B`.`Quantity`)) as `NEWCOLUMN` 
FROM `B` 
LEFT JOIN `A` 
ON `B`.`Value`=`A`.`Value` 

NEWCOLUMN не будет «новый столбец» в таблице B, но вы получите предполагаемую ценность результатов. Нет смысла хранить это в колонке (на самом деле мне интересно, почему у вас есть 2 таблицы в первую очередь).

Это также не относится к SequelPro, который является только клиентом MySQL ;-)

+0

Данные были предоставлены в разных файлах, а в одной из них таблица A имеет уникальные данные, а таблица B имеет дубликаты. Кажется, что вы набрали работу! Спасибо за вашу помощь. – theduker

+0

Рад, что так и сделал. Вам не нужен какой-либо внешний ключ, так как «Value» является основным ключом в обеих таблицах, соединение уже оптимизировано. – Capsule

+0

Есть ли в любом случае отображение составного первичного ключа из таблицы B в результатах? Например, у меня есть там, где 234567 равно 1, тогда 234567 равно 2 (где 1 и 2 - столбцовая последовательность). Я хочу иметь возможность определить, что есть в результатах. Надеюсь, это имеет смысл. – theduker

0

Вот инструкция Select для математической операции. Рабочий пример: http://sqlfiddle.com/#!9/83e52/7

#Table A is Test, Table B is Test1 

SELECT Test.Value, (Test1.Amt/(Test.Size * Test.Pack * Test1.Qty)) as New_Column 
FROM `Test1` 
LEFT JOIN `Test` 
ON `Test1`.`Value`=`Test`.`Value` 

Если вы нашли результат правильный, то используйте оператор Insert, чтобы вставить эти значения в столбец в таблице В.

P.S. Пожалуйста, предоставьте sqlfiddle в будущем, это поможет.

+1

Это сработало! В следующий раз я буду использовать sqlfiddle, спасибо. – theduker

Смежные вопросы