Я MYSQL для начинающих и у меня есть проблемы с запросом:MYSQL (SELECT при определенных условиях)
У меня есть две таблицы (звонки, callsfailed).
- называет эти столбцы (called_number, продолжительность).
- callsfailed эти столбцы (called_number, release_reason)
Позволяет Say вызовы Таблица является:
+---------------+----------+
| called_number | duration |
+---------------+----------+
| 1010101 | 13 |
| 1010101 | 18 |
| 1010101 | 20 |
| 2020202 | 50 |
| 2020202 | 20 |
| 3030303 | 10 |
| 4040404 | 30 |
+---------------+----------+
И callsfailed Таблица является:
+---------------+----------------+
| called_number | release_reason |
+---------------+----------------+
| 1010101 | -1 |
| 1010101 | -1 |
| 2020202 | -1 |
| 3030303 | 406 |
| 4040404 | 503 |
| 5050505 | -1 |
| 5050505 | -1 |
| 6060606 | -1 |
+---------------+----------------+
I хотеть для выбора вызываемого_собрания> 1, когда он делает продолжительность менее 25, ИЛИ он делает release_размер = -1. более 1 раза.
НО Если caller_number сделал срок более 25 лет, не выбрать его, даже если он имеет release_reason = -1.
Так что результат будет:
+---------------+-------+
| called_number | count |
+---------------+-------+
| 1010101 | 3 |
| 5050505 | 2 |
+---------------+-------+
Мой код:
( SELECT called_number, duration, COUNT(*) count
FROM calls
GROUP BY called_number
Having COUNT(called_number) > 1 and duration < 25
)
UNION
(SELECT called_number, release_reason, COUNT(*) count
FROM callsfailed
GROUP BY called_number
Having COUNT(called_number) > 1 and release_reason = -1
)
Там немного о проблеме с вашими таблицами: есть ли связь между вхождениями один стол, другой? Например, что, если число имеет как '-1', так и что-то еще (например,' 406') как 'release_reason', каков должен быть результат? – Terry
Было бы сосредоточено на '-1' и просто игнорировать' 406' или по любой другой причине –