Задать вопрос
  • Почему COUNT неправильно считает?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    SELECT PeopleTable.gender, COUNT(*) AS GenderCount
      FROM ListTable 
        INNER JOIN PeopleTable ON ListTable.userID = PeopleTable.id
      GROUP BY PeopleTable.gender

    А если нужен и ListTable, у которых нет соответствия в PeopleTable
    SELECT ISNULL(PeopleTable.gender, '-') [Пол], COUNT(*) [К-во]
      FROM ListTable 
        LEFT JOIN PeopleTable ON ListTable.userID = PeopleTable.id
      GROUP BY ROLLUP (PeopleTable.gender)
    UNION
    SELECT ' ', COUNT(*)
      FROM ListTable   
    ORDER BY 1 DESC, 2

    Две последние строчки показывают общее количество. Если они не совпадают выполните проверку. Руководство.
    DBCC CHECKTABLE ('PeopleTable')
    DBCC CHECKTABLE ('ListTable')
    Ответ написан
    Комментировать
  • Ежегодное обновление лицензии Windows?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    На компьютерах это никак не работает. MS очень лояльна по лицензиям, фактически позволяя обходить ограничения на них.
    Это работает в бухгалтерии, в которой ключи никак не работают. Там работают проводки, по которым и определяется актуальность лицензии.
    А новые ключи вам присылают, потому что это прописано в договоре и вашим контрагентам нужно подписать акт выполнения, но это никак не работает на компьютерах.
    Ответ написан
    Комментировать
  • Как вернуть флешку в пригодное состояние?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Что бы отформатировать том его нужно создать.619e057d9f615536070135.png
    Ответ написан
  • Как загрузить изображения в таблицу?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Ответ написан
    Комментировать
  • Почему Google Translate даёт неправильный перевод в ряде случаев?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    619a15e02edef350994466.png
    Предлагал не раз: возьмитесь сделать функционал Google на "тренированных" учётных записях. У меня даже намёка нет на "посуда".
    Ответ написан
  • Как правильно импортировать модули?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    в модуле родителя должен быть импортирован модуль с классом ребенка
    "родитель" не должен знать о "ребёнке".
    родитель содержит в себе поля класса ребенка
    Это ошибка. Перенесите все поля в "родителя".

    родитель это приложение
    619410450762f813033838.png
    child'ы это компоненты приложения
    619410743179b989512999.pngКак видите формы не наследуются от приложения. А находятся в одном модуле.
    И приложение управляет ими, поскольку их создаёт:Application.CreateForm(TForm1, Form1);
    А форма имеет доступ к приложению:Application.ExeName;

    я говорю не о наследовании.
    Расположите их в одном модуле.

    Примечание: paren:^TParent - это масло мысленное, так как переменная-объект - это и есть ссылка. Поэтому Proc1(Obj: TMyObject) и Proc1(var Obj: TMyObject) будут выполняться по-разному.
    Ответ написан
  • Google частично обработал файлы sitemap.xml?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Каждый день будет этот вопрос (https://qna.habr.com/q/1073850)?
    Не принимает, потому что ошибка, которую не исправляют уже очень давно. Не тратьте время зря.
    Яндекс эти файлы обрабатывает без ошибок.

    Победил, хотя это может быть индивидуально:
    - консоль не всегда показывает правду: показывает "не получено" - внутри самого файла "успешно";
    - не повторяет обработку при удалении и повторной загрузке: пересоздайте файл, хоть и с тем же содержимом;
    - размер: большой файл (~35000 URL) разделил на (max ~2600 URL), хотя по документации и большой файл должен загружаться;
    - семь загрузок в день, хотя в документации нет ограничений.
    Ответ написан
  • Почему не работает условие elif?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    if age >= 18:
       print("Поздравляю, вы уже взрослый!") 
    elif age >= 10:
       print("Поздравляю, вы — подросток!")
    else:
       print("Вы ещё ребенок.")

    Потому что второй будет проверятся для возраста меньше 18.
    Ответ написан
    Комментировать
  • Как создать счётчик посещаемости сайта на PHP и MySQL без обнуления на следующий день?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    У вас ничего не обнуляется. Вы же сами пишите и читаете данные за один день, а про другие дни — забываете, но они в таблице stats_visits сохраняются.
    Ответ написан
  • Как связать таблицы, которые находятся в разных БД?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Если у вас заранее не определены базы данных и таблицы, то на стороне сервера нужно делать динамические запросы, то есть формировать запрос, как строку.
    Если определены:
    SELECT 'TABLE1', Field1, Field2
      FROM Data1.dbo.Table1
    UNION
    SELECT 'TABLE2', Field1, Field3
      FROM Data2.dbo.Table2
    Ответ написан
    Комментировать
  • Что эффективнее работает Join Composite Key или Primary Key?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Точного ответа нет. Даже если в какой-то момент что-то будет быстрее, в зависимости от использования, будут построены кэши и статистики и следующий запрос будет работать по-другому (включите статистику клиента: он покажет изменения от запроса к запросу +/- красный/зелёный).
    Это MS SQL, вы никогда не сможет сделать лучше его оптимизатора. Помочь можно: есть "Помощник по настройке ядра СУБД". Или самый первый уровень: включите действительный план выполнения и статистику активных запросов— если у оптимизатора будет предложение, оно будет зелёным цветом в виде сценария CREATE (только подставите названия объектов).

    Да и использование datetime в качестве первичного ключа (только сейчас дошло) — не допустимо:
    тестируем

    CREATE TABLE [dbo].[Table_5](
    	[ID] [datetime] NOT NULL,
    	[Name] [varchar](50) NOT NULL,
     CONSTRAINT [PK_Table_5] PRIMARY KEY CLUSTERED 
    (
    	[ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    
    ALTER TABLE [dbo].[Table_5] ADD  CONSTRAINT [DF_Table_5_ID]  DEFAULT (getdate()) FOR [ID]
    GO

    Попробуем добавить:
    INSERT INTO Table_5 (Name)
      SELECT TOP(5) 'TEST' + CAST(ROW_NUMBER() OVER(ORDER BY id) AS VARCHAR)
             FROM sysobjects

    Не получается:
    Нарушено "PK_Table_5" ограничения PRIMARY KEY. 
    Не удается вставить повторяющийся ключ в объект"dbo.Table_5". 
    Повторяющееся значение ключа: (ноя 12 2021  3:06PM).


    Более подробно: системный таймер Windows, по-умолчанию, срабатывает 1000/64 раз в секунду, а точность datetime 1000/300, что должно было бы обеспечить уникальность последовательных значений. Но MS SQL, с помощью timeBeginPeriod, увеличивает частоту срабатывания таймера до 1000/1000. То есть при записи в datetime и округления до его точности, значения потеряют уникальность. Это известная коллизия этого типа данных не позволяет использовать его, как первичный ключ. В 1С есть специальная обработка для построения хронологических цепочек (например, что бы различать оплату и аванс относительно отгрузки), которая устанавливает на документах несовпадающее время.
    1) 1 PK - Int, 2) 1 PK - Datetime, 3) Year, Month - int Composite Key, 4) Year, Month, Day - int Composite Key
    datetime - это int+int. В первом — дата, во втором — время, которое, исходя из 3 и 4 пункта использовано не будет (и эти пункты излишни, естественно). Если вы хотите использовать дату как первичный ключ — используйте тип данных date (3 байта).
    Ответ написан
    3 комментария
  • Почему Google search console не принимает sitemap?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    С лета не работает. У меня часть принимает, часть нет. Пытался их загрузить заново, потому что обнаружил — GOOGLE их не обрабатывал год.
    Яндекс эти файлы обрабатывает без ошибок.

    Победил, хотя это может быть индивидуально:
    - консоль не всегда показывает правду: показывает "не получено" - внутри самого файла "успешно";
    - не повторяет обработку при удалении и повторной загрузке: пересоздайте файл, хоть и с тем же содержимом;
    - размер: большой файл (~35000 URL) разделил на (max ~2600 URL), хотя по документации и большой файл должен загружаться;
    - семь загрузок в день, хотя в документации нет ограничений.
    Ответ написан
    2 комментария
  • Как вытянуть музыку из флеш приложения?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Например:
    to SWF converter/unprotector
    Как Разобрать Flash (платный)
    JPEXS Free Flash Decompiler

    Или Far Manager умеет открывать EXE, как архив (то есть можно найти ресурсы):618b93d6a4cae377627457.png
    Ответ написан
    Комментировать
  • Как рассчитывать дату ежемесячного биллинга?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    В том языке программирования, на котором делается проект, найдите функцию изменяющую дату/время на указанный промежуток: ИЗМЕНДАТА(месяц, +1, ДатаНачалаПериода), например.
    Ответ написан
  • Как заполнить таблицу случайными данными?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Из комментария в вопросе:
    INSERT INTO sales (Product_idProduct, sale_date, price, [count])
      SELECT TOP(100) (RAND(id) * 3) + 1, 
                       DATEADD(dd, - (1000 * RAND(id)), GETDATE()), 
                       (RAND(id) * 100) + 1, (RAND(id) * 10) + 1
        FROM sysobjects
        ORDER BY id DESC
    Ответ написан
    Комментировать
  • Как запустить скрипт?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Проверьте правильно ли указан сервер localhost\Exos9300. Попробуйте просто Exos9300.
    Для тестирования используйте UDL. То есть создайте пустой файл с этим расширением и запустите его.
    Проверка
    618270dceb07b773702272.png

    В этом файле и будет название сервера Data Source=TSK-Home.

    И ещё попробуйте прямой запрос:
    osql -S TSK-Home -E -Q "BACKUP DATABASE [ComputerWare] TO DISK = '%BackUp%\ms-sql\ComputerWare.bak' WITH INIT, NOUNLOAD, NAME = 'ComputerWare archive', NOSKIP, NOFORMAT, STATS = 25"
    Ответ написан
    4 комментария
  • Низкая скорость скачивания торрента?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Некому раздавать (мало сидов) или провайдер ограничивает скорость по этому протоколу (мобильный интернет?).
    мобильный интернет
    А IP серее не куда? Вероятнее ограничивает провайдер (начал). Да и торрент-клиент, когда выбирает кому отвечать на запрос, вас выберет в последнюю очередь.
    Ответ написан
    6 комментариев
  • Как посчитать количество записей в группе по критерию и если их нет то вывести ноль?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    COUNT и возвращает 0, если нет строк отвечающих условию.

    Если нужны все факультеты, то:
    SELECT FacultyName, ISNULL(CN.Co,0)
      FROM Faculty
        LEFT JOIN (SELECT [Card].FacultyId,  COUNT(*) AS Co
    FROM [Card] 
    JOIN Diagnosis  ON [Card].CardId = Diagnosis.CardId
    JOIN Diagnosies  ON Diagnosies.Id = Diagnosis.Diagnosis
    WHERE Diagnosies.DiagnosisName = N'грип' AND YEAR(Diagnosis.VisitDate) = 2000
    GROUP BY [Card].FacultyId) AS CN
          ON CN.FacultyId = Faculty.FacultyID
    Ответ написан
  • Как перевести wsus с wid на sql-сервер?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Никак. Вы быстро упрётесь в ограничения редакции Express.
    Посмотрите на размер ваших файлов в C:\Windows\WID.
    Например, вы будет это проделывать достаточно регулярно?

    Основные особенности Windows Internal Database:
    База данных WID предполагает только локально использование, удаленно к ней подключиться не получится.
    Отсутствуют ограничения на размер файлов БД (в отличии от той же редакции SQL Express).
    Не требует для своего использования лицензии.
    Ответ написан
    Комментировать