Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 34

Тема: Выборка из базы SQLite

  1. #1

    По умолчанию Выборка из базы SQLite

    Добрый вечер. Подскажите пожалуйста, что я делаю не так.
    На ПЛК200 лежит файл базы SQLite по вот такому пути:/home/root/CODESYS/otchet.db
    Описание файла базы скрин 1 и 2.
    1.JPG 2.JPG
    Суть проблемы:
    В терминальном доступе к ПЛК, ввожу команду: sqlite3 /home/root/CODESYS/otchet.db "SELECT * FROM otchet"
    В ответ получаю выборку из базы.
    Если попытаюсь отсортировать по 2 колонке, ввожу команду: sqlite3 /home/root/CODESYS/otchet.db "SELECT * FROM otchet WHERE "2"="OST""
    В ответ получаю: Error: no such column: OST
    скрин 3
    3.JPG

  2. #2

    По умолчанию

    Может чтото типа: otchet.2 = ...

    PS А для текста не одинарные кавычки нужны?
    Последний раз редактировалось МихаилГл; 17.04.2025 в 17:50.

  3. #3

    По умолчанию

    Мысль от меня. Я могу быть не прав. Но попробую (так было в MySQL)
    Обычно имена таблиц и колонок задаются в обратных апострофах.
    А значения задаются в прямых апострофах.
    А тут вообще вложенные кавычки: запрос в кавычках, и значения в нём в кавычках.
    Кавычки экранируются через слеш.

    То есть, записать надо так:
    sqlite3 /home/root/CODESYS/otchet.db "SELECT * FROM `otchet` WHERE `2` = 'OST'"
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  4. #4

    По умолчанию

    А что там на первой картинке?
    CREATE TABLE "otchet" ("id" INTEGER ...
    А дальше?

  5. #5

    По умолчанию

    Цитата Сообщение от Vos-svar Посмотреть сообщение
    из базы.
    Если попытаюсь отсортировать по 2 колонке, ввожу команду: sqlite3 /home/root/CODESYS/otchet.db "SELECT * FROM otchet WHERE "2"="OST""
    3.JPG
    И где тут сортировка? Сортировка задаётся кляузой order by, а не where. Это раз. Вместо номера так-то положено имя столбца указывать. Это два.

  6. #6

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    А что там на первой картинке?
    CREATE TABLE "otchet" ("id" INTEGER ...
    А дальше?
    На первой картинке дано описание структуры таблицы.
    1-й столбец с именем "id" тип integer
    2-й столбец с именем "1" тип text
    и так далее до
    24-й столбец с именем "23" тип text

  7. #7

    По умолчанию

    Вот результат проверки разных вариантов написания
    4.JPG

    Может быть есть ограничения на названия столбцов в таблице? Нельзя например именовать цифрами?

  8. #8

    По умолчанию

    Цитата Сообщение от Vos-svar Посмотреть сообщение
    Вот результат проверки разных вариантов написания
    4.JPG

    Может быть есть ограничения на названия столбцов в таблице? Нельзя например именовать цифрами?
    Только вариант otchet.2 = не попробовали. В MSSQL, например, надо перед любым запросом либо делать активной саму базу, либо обращаться к столбцам базы через точку. А насчет наименования столбцов цифрами даже не знаю, у вас же создание таблицы проканало, возможно это не запрещено. И только одинарные кавычки не дают никаких сообщений об ошибках. Мельком глянул как запросы where в mysql делаются, но чего то хорошего описания так и не нашел, кроме использования ' для текста.

    PS Кстати да, двойные "", как говорили выше, могут неправильно пониматься. Это надо не в запросах к базе искать как писать, а к самой конструкции для команды sqlite3

    PS2 Почему на select '2' from... вылезли двойки, а не 1, 2, 3...
    Последний раз редактировалось МихаилГл; 18.04.2025 в 03:12.

  9. #9

    По умолчанию

    И еще для ознакомления Ключевые слова в SQLite
    Похоже что либо [2] = "OST", либо `2` = "OST"
    Одинарная или двойная ковычка не подходят.
    Последний раз редактировалось EFrol; 18.04.2025 в 07:36.

  10. #10

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    sqlite3 /home/root/CODESYS/otchet.db "SELECT * FROM `otchet` WHERE `2` = 'OST'"
    Наоборот.

    SELECT * FROM otchet WHERE "2" = 'OST'

    otchet не надо квотить никак

Страница 1 из 4 123 ... ПоследняяПоследняя

Похожие темы

  1. Запись в БД SQLite
    от evg3798 в разделе OPC Серверы
    Ответов: 3
    Последнее сообщение: 07.04.2025, 11:32
  2. Ответов: 4
    Последнее сообщение: 12.03.2025, 14:57
  3. Multi-Protocol MasterOPC Server запись тега в SQLite
    от Bigpapasugrob в разделе OPC Серверы
    Ответов: 0
    Последнее сообщение: 21.09.2022, 11:48
  4. ПЛК110(М02) длина и выборка из нее
    от hyperhack в разделе ПЛК1хх [М02]
    Ответов: 4
    Последнее сообщение: 22.04.2021, 11:01
  5. Отчет в мастерскада. Выборка из отчета.
    от Vitamin в разделе Master SCADA 3
    Ответов: 12
    Последнее сообщение: 25.07.2020, 13:37

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •