Вниз  MySQL и мелкие вопросы
- 28.07.2019 / 00:07
pmtpmt
  Пользователь

pmtpmt 
Сейчас: Offline
ДубоХирург, если вопрос не про журнал дежурств, то в таблицу с врачами. Можно два поля: начало и конец рабочих часов. Если просят сделать детализацию, сделай одно JSON поле (поклонники нормализации, идите в жопу).
- 9.02.2020 / 16:37
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
Недавно наткнулся на клёвую презентацию про хранение древовидных структур типа комментариев на хабре в реляционных СУБД. Автор рассказывает про 4 способа хранения:

  - adjacency list
  - path enumeration
  - nested sets
  - closure tables

Форум на этом сайте использует первый метод, adjacency list с модификацией.

Изменено Ксакеп (9.02 / 16:37) (всего 1 раз)
- 30.12.2020 / 11:07
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
Интересно, чем руководствовались М$, когда придумали, что GROUP BY обязан включать ВСЕ поля, которые есть в SELEСТ? :dum:

Мне нужна группировка по одному единственному полю, но так можно только в MySQL, который не используется. В случае с МС нужная мне группировка тупо не работает. Стоит добавить JOIN, становится ещё веселее: количество полей увеличивается, но результат тот же, группировки нет :stul:
__________________
 わからない!!
- 30.12.2020 / 15:19
web_demon
  Супервизор

web_demon 
Сейчас: Offline
Витаминыч, скинь структуру таблиц, и запрос.
Если я не забью на это через 10мин, то может помогу)

Изменено web_demon (30.12 / 15:22) (всего 2 раза)
- 30.12.2020 / 17:25
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
web_demon, там без вариантов) Это мысли вслух были.

Уже когда в MS SQL Server пишешь GROUP BY и только одно поле, подсвечивает как ошибку. Полез гуглить, нашел статью для MySQL, где пример работал, у меня так же было примерно. И там сноска была, что у мягких это иначе работает. Открыл пример для мс - и точно, там все что в SELECT надо прописывать.

Если интересно, то тупой пример
  1. #tb_Nakladnye
  2. Id: счетчик
  3. Artikul: текст
  4. Naimenovanie: текст
  5. NomerZakaza: текст
  6. -- еще куча полей
  1. SELECT Id, Artikul, Naimenovanie, NomerZakaza
  2. FROM tb_Nakladnye
  3. GROUP BY NomerZakaza -- в мускуле так работает, все соответствует действительности

Грубо говоря, без группировки идет большая выборка (допустим, 1000 строк), ее нужно сгруппировать по номеру заказа. Например, если смотреть отдельно таблицу с заказами по номеру заказа, то получается, к примеру, 100 строк. В отчетности (простой файл, который генерируется в другой программе и к базе никакого отношения не имеет) содержатся те же 100 строк. Т.е., у меня всё корректно.

Если я пропишу все поля, как этого требуют МС, на выходе имею те же 1000 строк, а ожидается, что будет 100.

Пришлось отказаться от группировки и городить JOIN и доп проверки на поля в WHERE. Тогда получается желаемый результат :gg: Жалко потраченного времени только.
__________________
 わからない!!
- 12.02.2021 / 14:53
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
В каких случаях insert в ms access может записывать данные со смещением столбцов, когда я в commandText четко прописал названия и значения? :dum: Значения передаю через Parameters.AddValue

Суть в том, что при жестком задании типов полей возникает ошибка несоответствия типов. Ставлю везде текстовый - пишет со смещением (айди в дату, дату в фамилию и т.д.).
__________________
 わからない!!

Изменено Витаминыч (12.02 / 14:56) (всего 1 раз)
- 15.02.2021 / 14:53
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
Витаминыч, первый неявный параметр забыл может быть, например, id? Или передаваемых параметрах проблема.
- 16.02.2021 / 06:41
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
Ксакеп, скорее в самом файле бд. Потому что изгачально было всё под sql (sqlconnection и т.д), поменял на OleDb. Команды правильно всё передают. Про неявное поле не понял.
__________________
 わからない!!
- 16.02.2021 / 11:43
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
Ставлю везде текстовый - пишет со смещением (айди в дату, дату в фамилию и т.д.).
Предположим ты хотел вызвать f(id, date, family). Но по твоему сообщению ясно, что первый параметр подставляется автоматически, то есть вызывается f( :gg: , id, date, family), где :gg: — это какая-то штука, которую сам драйвер проставил, как значение поля id.
- 16.02.2021 / 16:19
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
Цитата Ксакеп:
Предположим ты хотел вызвать f(id, date, family). Но по твоему сообщению ясно, что первый параметр подставляется автоматически, то есть вызывается f( :gg: , id, date, family), где :gg: — это какая-то
жесть 🤔
__________________
 わからない!!
Наверх  Всего сообщений: 750
Фильтровать сообщения
Поиск по теме
Файлы топика (22)