2015-03-29 2 views
0

Добрый день. Я с трудом выяснить, как это сделать:SQL: ссылки на таблицы

SELECT P.GrossSalary, S.Contribution FROM Payroll AS P, SSSChart AS S WHERE 
P.GrossSalary >= S.RangeStart AND P.GrossSalary <= S.RangeEnd; 

мне нужно соответствующее количество вклада от SSSChart таблицы, где брутто заработная плата между началом и концом диапазоном.

Проблема заключается в том, что она будет работать с первой найденной совпадающей записью из таблицы расчета зарплаты, но поиск из таблицы SSSChart не будет начинаться с вершины снова для следующей записи зарплаты, вместо этого продолжит поиск после найденной записи из предыдущей записи заработной платы. Я попробовал несколько команд SQL, но не нашел удачи. Вся помощь будет оценена. (Выполнение этой практики в моей платежной системе)

+0

Не могли бы вы добавить пример того, что именно означает u? – bayblade567

+0

Пример: первая валовая зарплата из таблицы расчета заработной платы составляет 1350, что соответствует первой строке таблицы SSS (валовая зарплата> = rangeStart и валовая зарплата <= rangeEnd). 2-я строка таблицы расчета заработной платы находится в диапазоне от первой строки таблицы SSS. , но он не возвращает никакого вклада, потому что я заметил, что после первого результата поиск из таблицы SSS будет продолжаться до следующей строки после первого результата. он теперь снова будет искать верхнюю часть таблицы SSS :( –

ответ

0

Вы хотите запросить всю таблицу Payroll и найти соответствующее значение contribution из таблицы SSSChart по каждому результату? Рассмотрим пытается что-то вдоль линий:

SELECT 
    P.GrossSalary, S.Contribution 
FROM 
    Payroll as P 
LEFT JOIN 
    SSSChart as S ON P.GrossSalary >= S.RangeStart AND P.GrossSalary <= S.RangeEnd 
WHERE 
    1; 

Это предполагает, что каждый GrossSalary только принадлежит ровно один диапазон SSSChart.

+0

Да, сэр. Я пробовал это, но те же результаты. –

+0

Ты на правильном пути, сэр, вот что я говорю. :) Моя команда предполагает, что я «Ищу 1» - 1 результат. то, что я хочу, много до 1 результата: D –

+0

Почему «где 1»? Это какой-то трюк доступа? – jarlh