У меня возникают проблемы с оператором select SQL. Я признаю, что я новичок, поэтому заранее извиняюсь за любую неправильную терминологию.SQL: выберите элемент только один раз при фильтрации многими из многих
Так что я пытаюсь выбрать настроенные вызовы с заранее определенными тегами. Проблема, с которой я сталкиваюсь, заключается в том, что если вызов имеет несколько тегов, он вернет этот вызов для каждого тега, который отрицает всю суть того, что я пытаюсь сделать. Мне просто нужно руководствоваться тем, как использовать таблицу «многие из многих», и выбирать каждый элемент только один раз, а не для каждого тега.
Heres образец запроса, который отлично работает, кроме звонков.
SELECT `call`.`id`, `call`.`phone_number`, COUNT(`call`.`phone_number`)
FROM `call`
INNER JOIN `call_tag` on `call_tag`.`call_id` = `call`.`call_id`
INNER JOIN `tag` on `tag`.`id` = `call_tag`.`tag_id`
WHERE `tag`.`id` IN (1,2,3)
AND `call`.`phone_number` IN ('4445556666', '6665554444', '8889997777')
AND `call_date` BETWEEN '2015-01-01 07:00:00+00:00' and '2015-03-20 05:59:59+00:00'
GROUP BY `call`.`id`
Я попытался использовать команду Distinctive, но не дал никаких изменений в моих результатах. Я буду работать над этим, и если я найду решение своей проблемы, я поделюсь ею.
Можете ли вы предоставить образцы данных и желаемые результаты? Учитывая, что вы группируете по идентификатору, вы не должны возвращать дубликаты в своем запрошенном запросе. – sgeddes
У вас есть группа. Он не будет возвращать вызов несколько раз. –
Он не будет возвращать номер телефона несколько раз, но это испортит счет. – hines