• 46501
  • 107
  • 12
Нравится блог?
Подписывайтесь!

SQL заметки

Сохраню разные интересные моменты касательно работы с SQL

# Error #1467 - Failed to read auto-increment value from storage engine

Случилась такая зараза, что в таблицу, где было 115 записей надо было вставить данные из другой таблицы (31 запись). И INSERT...SELECT постоянно матерился ошибкой. В итоге надо было указать откуда начать инкремент, видимо. Короче, вставка случилась вот таким образом

  1. ALTER TABLE questions AUTO_INCREMENT = 116;
  2. INSERT INTO questions (id,category, question, subcat)
  3. SELECT NULL, 6, docs.docname, "Документация" FROM docs
 

# предпоследняя запись

блин легко же, но пару часов убил. как достать предпоследнюю запись выборки?

...

ORDER BY id DESC
LIMIT 1,1

в обратно отсортированном массиве взять одну строчку начиная со 2й ))) сработало в подзапросе.

 

# Значение из какого-то из нескольких полей

Предположим, есть 3 поля, в которых заполнено в строке только одно из них. Лучше ведь вывести их склеив столбцы в один. Тогда

  1. SELECT IFNULL(поле_1,
  2. (SELECT IFNULL(поле_2,
  3. (SELECT IFNULL(поле_3,
  4. '')))))
  5. FROM some_table
  6. WHERE some_id=45

не одно так другое поле, не другое так третье ) что-то из них даст результат либо пустую строчку.

 

# Взять значения из таблицы по значению (параметру) из той же таблицы

Пример такой: все подразделения находятся в одной таблице, где имеют параметр 'parent' - к чему относятся. В общем, таблица зациклена сама на себя. И надо было вытащить подразделения и к кому они относится.

таблица выглядела

id | nameshort | parent

  1. SELECT dep.nameshort, de.nameshort
  2. FROM psu_compark.department dep, psu_compark.department de
  3. WHERE de.parent = dep.id

т.е. к таблице обращаемся дважды как к разным.

# разница недель, учитывая год
Случилась нужда в вычислении разницы недель между 2мя периодами (даты).

Тут бы


  1. SELECT (WEEK(c.PERIODEND,1) - week(c.PERIODBEG,1)

но проблема в том, что год может быть либо этот же, либо следующий. Например,

"2014-02-02" - "2013-12-02" = 5 - 49 = -44, когда должно быть 9 недель. Решил подправить это, дописывая разницу, равную количеству недель в году. Т.е. если год тотже, то разница даст 0 и произведение на количество недель также даст 0, а значит ничего не добавится. Если года разные, то будет прибавляться количество недель в году * 1. ($year подставляю в PHP, тут будет 2013)


  1. SELECT(WEEK(c.PERIODEND,1) - week(c.PERIODBEG,1) + (WEEK('".$year."-12-31')*( YEAR(c.PERIODEND) - YEAR(c.PERIODBEG) ) ))

чую есть стандартное SQL решение, но не придумал.

Руслан Fors fors
... и тем не менее я не идеален.
15 февраля 2013, 22:37
628

Загрузка...

Комментарии

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Дастархан в те времена был скромен. Не было понятия «сынау» - осуждения кто как живет, какой в доме ремонт и т.д. Пока взрослые обсуждали задержку заработной платы, мы играли в армию, жмурки, строили городки...
socium_kzo
5 дек. 2016 / 15:19
  • 31886
  • 30
Верховный Суд презентовал комментарий к Гражданскому процессуальному кодексу

Верховный Суд презентовал комментарий к Гражданскому процессуальному кодексу

ГПК содержит 505 статей, многие из которых написаны несколько сложным юридическим языком. Однако теперь понять их можно проще и без обращения к юристу.
RuSnake
6 дек. 2016 / 10:31
  • 11108
  • 0
Невозвращенцы-болашаковцы должны государству почти 2 млрд тенге. Кто их теперь вернет?

Невозвращенцы-болашаковцы должны государству почти 2 млрд тенге. Кто их теперь вернет?

Как сообщают новостные порталы, в Нью-Йорке нашёлся бывший болашаковец Ержан Еликов, исчезнувший пять лет назад и всё это время не выходивший на связь с родителями. Да-да, это именно он, «тот самый».
openqazaqstan
9 дек. 2016 / 14:31
  • 10712
  • 47
Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

"Мужчины должны у вас тут права качать, ибо их процент в вашей численности населения уступает проценту женщин". Я машинально начала уверять, что у нас в стране таковых не имеется...
Sapientia
5 дек. 2016 / 10:52
  • 11080
  • 71
Известный европейский фотограф показал истинную красоту казашек

Известный европейский фотограф показал истинную красоту казашек

С 26 по 30 ноября в Алматы гостил известный европейский фотограф Ян Маклайн в рамках реализации совместного проекта с Казахстаном. Подробности не уточняются, однако ходят слухи о том, что этот...
Muchacho55
7 дек. 2016 / 18:29
  • 9858
  • 8
Распил 1 млрд долларов или спасение для Алматы? В 2017-м начнётся строительство БАКАД

Распил 1 млрд долларов или спасение для Алматы? В 2017-м начнётся строительство БАКАД

Конечно, Алматы заслужил эту дорогу. Невзирая на все издержки, которые могут возникнуть. Заслужил и как крупнейший город Казахстана, и как субъект, формирующий своими налогами около четверти всех...
merurg
7 дек. 2016 / 12:35
  • 7606
  • 20
Цены Шымбулака – не для казахстанцев? Но вы не нойте. Держитесь и всего вам хорошего

Цены Шымбулака – не для казахстанцев? Но вы не нойте. Держитесь и всего вам хорошего

Знаменитый алматинский горнолыжный курорт «Шымбулак», которым мы все привыкли гордиться, с 10 декабря поднимает цены на свои услуги. Например, дневной абонемент на катание на склонах Шымбулака...
pacifist
9 дек. 2016 / 12:13
  • 7300
  • 29
«Лицо дьявола»? Страшный силуэт на стекле – не оправдание водительской безответственности

«Лицо дьявола»? Страшный силуэт на стекле – не оправдание водительской безответственности

Казнет уже которые сутки подряд обсуждает страшную аварию на трассе Астана – Боровое, где сошлись страшные мистические знаки и где из-за банальной человеческой безответственности гибли люди..
openqazaqstan
8 дек. 2016 / 13:14
  • 6971
  • 7
10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

Я почти год проработала в школе, и когда уходила оттуда, была самым счастливым человеком в мире. Тот год, честно говоря, я и сейчас вспоминаю с ужасом.
demonica
6 дек. 2016 / 17:21
  • 6692
  • 79