Мои фактические таблицы намного сложнее, но вот упрощенный пример проблемы, которую я пытаюсь решить.Поиск суммы поля в связанной таблице для каждой группы с дополнительными критериями поиска
- Таблица контакт: ContactID, ContactName, В ожидании
- Таблица покупки: PurchaseID, ContactID, Сумма, Pending Дата
- Таблица contact_purchase_link: ContactID, PurchaseID (хотя это может показаться таблицы ссылок не является необходимым в этом упрощенном примере это необходимо в большой схеме таблицы)
Вот запрос, который я в настоящее время:
SELECT DISTINCT contact.ContactID,
(SELECT SUM(Amount)
FROM purchase
WHERE purchase.ContactID = contact.ContactID
AND purchase.Pending = 0
) totalpurchase
FROM contact
INNER JOIN (contact_purchase_link JOIN purchase
ON (contact_purchase_link.PurchaseID = purchase.PurchaseID
))
USING (ContactID)
WHERE purchase.Date > '2013-12-06' AND
AND contact.Pending =0
Проблема заключается в том, что я хочу, чтобы totalpurchase (сумма поля суммы) ограничивалась критериями поиска таблицы покупки - это означает, что запрос должен возвращать только сумму покупок после указанной даты на контакт. Я думаю, что для использования предложения group by запрос должен основываться на таблице закупок, но мне нужен запрос, чтобы использовать таблицу контактов, чтобы все контакты были указаны вместе с их суммой покупки и другими соответствующими данными клиента. Есть ли способ сделать это в рамках одного запроса?
В целях дальнейшего уточнения:
Этот запрос генерируется как часть поискового механизма. Пример того, почему такой запрос был бы выполнен, заключается в том, что пользователь хотел создать список контактов последних имен, начинающихся с A, с покупками определенного элемента или в этом примере покупок на определенную дату. Таким образом, в общем случае запрос должен был бы генерировать список всех контактов и их данных (с возможными критериями поиска по типу контакта, таким как все последние имена, начинающиеся с «A» и т. Д.), И запрос может также включать критерии поиска на таблицу покупки, такую как дата покупки, и была ли покупка определенной позиции и т. д.
Я пытаюсь добавить в опцию также список сумм покупок для контакта, однако эта сумма должна быть ограничена критерии поиска для таблицы покупки, а также сумма всех покупок контактов.
Предлагаю вам проверить ваш запрос (как опубликовано) на наличие синтаксических ошибок. –
Я не понимаю, что вы пытаетесь сделать здесь. У вас есть таблица ссылок, но в вашем текущем запросе 'покупка' соединяется непосредственно с' contact' в 'SELECT SUM (Amount)' part. Не могли бы вы добавить примеры данных и ожидаемые результаты? Чтобы помочь прояснить ваш вопрос, образцы данных должны включать в себя пару записей «покупки», которые не будут включены в сумму «totalpurchase». –
Спасибо Я исправил ошибки синтаксиса в запросе. Этот запрос является упрощенным запросом гораздо более сложного запроса, генерируемого поисковой системой. Причина, по которой я оставил прямую ссылку от контакта к таблице покупки, заключается в том, что в реальном запросе она напрямую связана с контактом по умолчанию в таблице закупок. Однако я хотел уйти в join в таблицу contact_purchase_link, потому что это неотъемлемая часть более сложного запроса, и мне нужен ответ, который включает эту часть. – ssp