Forum Webscript.Ru
Общие => Базы данных => Тема начата: 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 заведомо неизвестно.
Поэтому совершенно непонятно, до какого номера генерить таблицу.
-
А если будет запись с id_number = 128, надо будет [8; 127] тоже доставать?
-
Правильно. Все от 8 до 127 включительно.
-
Выбираешь существующие, при fetchingе создаёшь PHP-массив и одновременно вычисляешь максимальный, потом array_diff (или как там?) с массивом, созданным с пом. range.
-
Да, но в предложенном решении средства MySQL не используются. Если на PHP, то можно и не создавать два огромных массива, а пройтись по id_number со счетчиком if ($id_number > $i). Первое же несовпадение (5 > 4) сообщит потерянную цифру 4. Но решение для MySQL нужно.