2014-02-01 5 views
0

Я соединяющий две таблицы на колонке TINYINT, которая работает идеально, как:MySQL Регистрация Condition с Вычитанием

table1 INNER JOIN table2 ON table1.col = table2.col 

Теперь я хотел бы присоединиться к записи, где значение table1.col больше, чем один table2.col:

table1 INNER JOIN table2 ON table1.col = (table2.col - 1) 

Неожиданно это возвращает пустой результат.

Почему? Может ли кто-нибудь прояснить это и помочь мне?

Заранее благодарен, Sascha.

+2

Предположительно потому, что нет ни одной строки, которые соответствуют условию. Можете ли вы предоставить образцы данных? Или еще лучше, пример SQL Fiddle? –

+1

@ michel-sim. , , Я верю, что ваш ответ правильный. Если table1.col равно 10, тогда table2.col будет 9 - условие в вопросе обратное. –

+0

Правильно! Кажется, я жертва своего отсутствия сна. Это должно быть: table1 INNER JOIN table2 ON (table1.col - 1) = table2.col. Его просто простая математика ... – Windwalker

ответ

2

Ваше условие соединения вычитанием неправильный столбец - так table1.col больше на единицу, чтобы уравнять значения нужно вычесть 1 из нее, или добавьте к table2.col, например:

table1 INNER JOIN table2 ON (table1.col - 1) = table2.col 

Для конкретный пример, предположим, что ряд в table 1 где table1.col=8 должен быть согласован с рядом в table2 где table2.col=7 - вам нужно вычесть 1 из 8 или добавить 1 до 7.

+0

, что означало бы t1.col на 1 меньше, чем t2.col –

+1

Я бы написал это как 'table1.col = table2.col + 1'. , , но нет никакой разницы. –

+0

@PhilCross Нет, подумайте об этом так: Table1.com = 11. Table2.col = 1. Table1.col - 1 (11-1) = Table2.col (10). – Ilion

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