Forum Webscript.Ru

Общие => Базы данных => Тема начата: CLiI{er от 23 Июня 2004, 14:13:03

Название: MySQL: Выборка отсутствующих номеров
Отправлено: CLiI{er от 23 Июня 2004, 14:13:03
Здравствуйте.

Подскажите пожалуйста, как решить проблему с выборкой отсутствующих номеров.
Таблица:
+----+-----------+-------+
| id | id_number | value |
+----+-----------+-------+
| 11 | 1         | a     |
| 12 | 2         | b     |
| 13 | 3         | c     |
| 25 | 5         | d     |
| 57 | 7         | e     |
+----+-----------+-------+

Нужно выбрать числа 4 и 6 из поля id_number.

Вторую таблицу что-ли делать из сгенерированных номеров, а потом по LEFT_JOIN всё выбрать?
Так число в поле id_number заведомо неизвестно.
Поэтому совершенно непонятно, до какого номера генерить таблицу.
Название: MySQL: Выборка отсутствующих номеров
Отправлено: tserbis от 23 Июня 2004, 15:35:21
А если будет запись с  id_number = 128, надо будет [8; 127] тоже доставать?
Название: MySQL: Выборка отсутствующих номеров
Отправлено: CLiI{er от 23 Июня 2004, 15:42:01
Правильно. Все от 8 до 127 включительно.
Название: MySQL: Выборка отсутствующих номеров
Отправлено: tserbis от 23 Июня 2004, 15:59:48
Выбираешь существующие, при fetchingе создаёшь PHP-массив и одновременно вычисляешь максимальный, потом array_diff (или как там?) с массивом, созданным с пом. range.
Название: MySQL: Выборка отсутствующих номеров
Отправлено: CLiI{er от 23 Июня 2004, 16:50:50
Да, но в предложенном решении средства MySQL не используются. Если на PHP, то можно и не создавать два огромных массива, а пройтись по id_number со счетчиком if ($id_number > $i). Первое же несовпадение (5 > 4) сообщит потерянную цифру 4. Но решение для MySQL нужно.