2016-07-26 2 views
0

Я пытаюсь извлечь данные из двух отдельных таблиц, но только для определенных столбцов, а затем я присоединяюсь, чтобы отображать только одну строку на каждого клиента с общей суммой их платежей, но информация не отображается. Код ниже. Именно для страницы с отчетами подумайте о получении суммы всех платежей. Я знаю, что я ищу, я просто думаю, что, возможно, в запросе есть ошибка, которую я, похоже, не поймаю. Я мог бы использовать дополнительную пару глаз, чтобы указать на недостаток, если это возможно. Спасибоsql join query не возвращает данные, просто пробел

SELECT pre.id, pre.loanAmount, pre.custId, 
     SUM(pay.amount) AS amount, 
     DISTINCT(pay.company) AS company, 
     DISTINCT(pay.loanId) AS loanId 
FROM preQualForm pre INNER JOIN 
    payments pay 
    ON pre.custId=pay.custId 
+0

Просьба предоставить образцы данных и ожидаемые результаты. Как есть, трудно понять ваш вопрос. – sgeddes

+0

Я удалил несовместимые теги базы данных. Не стесняйтесь добавлять тег для базы данных, которую вы действительно используете. –

ответ

1

DISTINCT Ключевое слово относится ко всем столбцам вы SELECT, , так что если вам необходимо также сделать агрегатные функции, такие как SUM, то лучше достигается с помощью оговорки GROUP BY на неагрегированных колонн.

Следующие должны работать.

SELECT 
    pre.id 
    , pre.loanAmount 
    , pre.custId 
    , SUM(pay.amount) AS Amount 
    , pay.company AS Company 
    , pay.loanId AS LoanId 
FROM preQualForm pre 
    INNER JOIN payments pay 
    ON pre.custId = pay.custId 
GROUP BY 
    pre.id 
    , pre.loanAmount 
    , pre.custId 
    , pay.company 
    , pay.loanId 
+1

Спасибо! Я нашел способ сделать это с частью вашего примера, но у меня есть чувство, что мне понадобится остальная часть группы в ближайшее время. Я ценю ссылку на группу по примеру! –

0

для начинающих вы не указали пункт GROUP BY. (Там могут быть и другие вопросы, но для этого нам нужны данные и ожидаемые результаты)

SELECT pre.id, pre.loanAmount, pre.custId, SUM(pay.amount) AS amount, 
     DISTINCT(pay.company) AS company, 
     DISTINCT(pay.loanId) AS loanId 
    FROM preQualForm pre 
    INNER JOIN payments pay 
    ON pre.custId=pay.custId 
GROUP BY pre.id, pre.loanAmount, pre.custId 
0

DISTINCT() не функция в SQL (по крайней мере, не в любом диалекте я знаком с). Я бы начал с этого вопроса:

SELECT pre.custId, SUM(pay.amount) AS amount 
FROM preQualForm pre INNER JOIN 
    payments pay 
    ON pre.custId = pay.custId 
GROUP BY pre.custId; 

Казалось бы, вернуть то, что вы хотите. Вы можете улучшить его, если это не возвращает всю необходимую вам информацию.

+1

SQL Server Позволяет использовать различные функции. Он просто игнорирует скобу. – objectNotFound

+0

@objectNotFound. , , SQL Server - как и для всех баз данных - поддерживает 'select distinct'. Никакая база данных не поддерживает 'distinct()' как функцию, а не 'distinct' дважды в том же' select'. –

+0

Я просто ссылался на использование Distinct с скобками, хорошо улавливающими недопустимое использование двух разных элементов в одном и том же элементе. – objectNotFound