Я использую две таблицы для моего текущего проекта (он, безусловно, будет расти).
Первая таблица имеет одинаковое количество столбцов, т. Е.
id|name|surname|age|token |currentpackage|difference
1 |me | you | 22|xc2e2144124sd |100 |0
Второй стол:
id|mirror|token| connsize|price
81|server|xc2e2144124sd|100mbps |1000
Эти таблицы полны данных. В таблице table1 есть несколько строк с тем же значением токена, что и в таблице 2.
Я уже довольно долго гуглил решение, это лучшее, что я нашел:
http://www.mkyong.com/hibernate/hibernate-one-to-one-relationship-example/
а также
http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-one-to-one-1.html
Но я не думаю, что это применимо к моему делу (или они имеют). В этих примерах отношение является ключом, который является инкрементным, мой токен такой же, как и в базе данных.
Моя конечная цель - рассчитать разницу между текущей упаковкой и ценой
Что бы вы порекомендовали для этого? Я использую Java / Hibernate / Spring
Есть ли другой способ сообщить hibernate для связи чем-то другим, кроме первичного ключа?
какой-нибудь пользовательский ключ, такой как токен в таблице 1? токен - это некая связь между таблицей 1 и таблицей 2. Его много (таблица1) к одному (таблица2).
ПОСЛЕДНИЕ ОБНОВЛЕНИЯ
Я пытаюсь сделать это с помощью запроса, чтобы вычесть эти два столбца:
UPDATE packages tl
SET difference = (select (t2.price-t1.currentpackage)
from packages t1, mirrors t2
where t2.token= t1.token)
Я получил эту ошибку:
ERROR: more than one row returned by a subquery used as an expression
Я, должно быть, перепробовал много вариантов, но ни один не работал
Попробовал также и тот же результат:
UPDATE packages X
SET difference = (select Y.price-X.currentpackage
FROM packages X
LEFT OUTER JOIN mirrors Y
ON Y.token = X.token)
Кажется, это то, что я ищу, но я не могу включить это в свой запрос:
Вычесть значения из двух разных таблиц