У меня ограниченный опыт работы с SQL, и в настоящее время я работаю над небольшим проектом, чтобы создать представление из разных таблиц. Однако в результате я получаю декартовую продукцию.SQL looping Декартовой продукт
У меня есть 3 таблицы, с которыми я работаю, первая таблица содержит информацию о каждой ветви, вторая таблица имеет номера счетов и имена, а третья таблица имеет месячные итоговые значения. Я хочу создать представление, в котором каждая строка имеет номера учетных записей, за которыми следует столбец за каждый месяц.
Таблица ACCT - номер (первичный ключ), номер Acct, имя учетной записи и множество других столбцов, которые не важны для этого проекта.
ИТОГО Таблица - номер филиала (указывает на таблицу ОТКРЫТИЯ), месяц (формат ММ-ГГГГ), номер Acct (указывает на первичный ключ таблицы ACCT) и столбец ежемесячных итогов.
Acct - Acct Имя - Ян Сумма - февраль Сумма - март сумма ..... декабрь Сумма
Я хотел сделать что-то вроде для-каждого цикла (для каждого учетного, показываю месячные суммы), но поскольку SQL не имеет этого параметра, я сделал следующее. Я даже не присоединяюсь к таблице филиалов в этот момент и только с выбранными двумя месяцами я получаю декартовой продукт.
select a.scode glacct, a.sdesc glacctdescp,
t1.smtd Amt01, t2.smtd Amt02
from acct a
inner join total t1 on a.hmy = t1.hacct and t1.umonth = '2013-01-01' and t1.ibook = '1'
left outer join total t2 on a.hmy = t2.hacct and t2.umonth = '2013-02-01' and t2.ibook = '1'
Я был бы признателен, если вы можете сказать мне, как исправить внутреннее соединение заявления, так как именно там у меня есть проблемы. Индивидуально это дает мне информацию, которую я ищу, но входы не работают.
Благодаря
Ваш запрос выглядит нормально. Почему вы думаете, что получаете декартовую продукцию? –
waht's ваши dbms? –
Индивидуально я получаю около 9000 записей за каждый месяц, но в этом объединенном запросе мои результаты находятся в диапазоне 430 000. – deepiceman