Автор Тема: MySQL: Выборка отсутствующих номеров  (Прочитано 2993 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CLiI{er

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://glossword.info/
Здравствуйте.

Подскажите пожалуйста, как решить проблему с выборкой отсутствующих номеров.
Таблица:
+----+-----------+-------+
| 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 заведомо неизвестно.
Поэтому совершенно непонятно, до какого номера генерить таблицу.
gw веб-песочница жж

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
MySQL: Выборка отсутствующих номеров
« Ответ #1 : 23 Июня 2004, 15:35:21 »
А если будет запись с  id_number = 128, надо будет [8; 127] тоже доставать?

Оффлайн CLiI{er

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://glossword.info/
MySQL: Выборка отсутствующих номеров
« Ответ #2 : 23 Июня 2004, 15:42:01 »
Правильно. Все от 8 до 127 включительно.
gw веб-песочница жж

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
MySQL: Выборка отсутствующих номеров
« Ответ #3 : 23 Июня 2004, 15:59:48 »
Выбираешь существующие, при fetchingе создаёшь PHP-массив и одновременно вычисляешь максимальный, потом array_diff (или как там?) с массивом, созданным с пом. range.

Оффлайн CLiI{er

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://glossword.info/
MySQL: Выборка отсутствующих номеров
« Ответ #4 : 23 Июня 2004, 16:50:50 »
Да, но в предложенном решении средства MySQL не используются. Если на PHP, то можно и не создавать два огромных массива, а пройтись по id_number со счетчиком if ($id_number > $i). Первое же несовпадение (5 > 4) сообщит потерянную цифру 4. Но решение для MySQL нужно.
gw веб-песочница жж

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28