Форум программистов, компьютерный форум, киберфорум
SQLite
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Ssnake707
8 / 8 / 11
Регистрация: 02.02.2015
Сообщений: 140

Запрос к SQLite

26.12.2015, 20:42. Показов 1828. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть бд
к каждой стране есть свой цвет, но если одна и та же дата повторяется у нескольких стран (больше 1 страны), то для неё цвет уже другой.
нужно написать такой запрос, что бы он вернул:
1) Дату, которая будет повторяться 1 раз (в результате запроса не должно быть одинаковых дат)
2) id страны у которой эта дата, но если эта дата есть еще у какой-то страны, т.е. одна дата у нескольких стран, то вернуть -1
в результате запроса этой БД, которую я прикрепил должно получится следующее.
дата | страна
01.01.2016 | -1
02.01.2016 | 1
03.01.2016 | 2
04.01.2016 | 3
05.01.2016 | 1
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.12.2015, 20:42
Ответы с готовыми решениями:

SQlite запрос
Помогите составить запрос Есть простая база: fio price buy Петров 4500 true Сидоров 3000 false Петрок 2000 true ...

Вложенный запрос SQLite
друзья, только начал разбираться с SQLite'ом, подскажите, пожалуйста, где у меня ошибка во вложенном запросе: CREATE TRIGGER...

Перенести запрос из MySql в SQLite
Добрый день! Есть запрос, который работает в MySql, но в SQLite не хочет, ругается на скобки. Запрос должен выводить следующее: 2...

15
66 / 64 / 24
Регистрация: 14.10.2014
Сообщений: 339
27.12.2015, 10:32
Попробуй так:
SQL
1
2
3
SELECT DATE, CASE WHEN COUNT(*) > 1 THEN -1 ELSE MAX(country) END AS xxx
FROM someTable
GROUP BY DATE
1
 Аватар для Ssnake707
8 / 8 / 11
Регистрация: 02.02.2015
Сообщений: 140
27.12.2015, 16:57  [ТС]
ApXyC, Всё работает, но не совсем как планировал, можно ли подправить запрос так, что бы у даты 05.01.2016 он вывел ид страны, а не -1, суть в том если одна дата есть у разных стран, то выводить -1, а в 05.01.2016, одна дата у одной страны, просто продублированная, а значит надо вывести ид страны, а не -1. Если можно поправить запрос, то буду очень признателен.

Добавлено через 2 минуты
ApXyC, Может перед основным запросом вызвать под запрос, где будут убираться идентичные строки?
0
66 / 64 / 24
Регистрация: 14.10.2014
Сообщений: 339
27.12.2015, 17:30
Нафиг подзапросы - делай так:
SQL
1
2
3
SELECT DATE, CASE WHEN COUNT(DISTINCT *) > 1 THEN -1 ELSE MAX(country) END AS xxx
FROM someTable
GROUP BY DATE
0
 Аватар для Ssnake707
8 / 8 / 11
Регистрация: 02.02.2015
Сообщений: 140
27.12.2015, 17:33  [ТС]
ApXyC, SQLiteException: near "*": syntax error (code 1):
0
66 / 64 / 24
Регистрация: 14.10.2014
Сообщений: 339
27.12.2015, 17:35
точно, йа апельсинко )) звездочку на country замени
1
 Аватар для Ssnake707
8 / 8 / 11
Регистрация: 02.02.2015
Сообщений: 140
27.12.2015, 17:37  [ТС]
ApXyC, всё работает, спасибо большое
0
 Аватар для Ssnake707
8 / 8 / 11
Регистрация: 02.02.2015
Сообщений: 140
09.01.2016, 16:04  [ТС]
Помогите изменить этот запрос
SQL
1
2
3
SELECT DATE, CASE WHEN COUNT(DISTINCT country) > 1 THEN -1 ELSE MAX(country) END AS xxx
FROM someTable
GROUP BY DATE
Нужно вместо MAX(country) вывести столбец id_color, который находится в таблице country_ru.
country_ru
SQL
1
2
3
4
5
CREATE TABLE `country_ru` (
    `_id`   INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `name`  INTEGER NOT NULL,
    `id_color`  INTEGER NOT NULL
);
т.е. вместо MAX(country) вывести столбец id_color из таблицы contry_ru, соответственно вывести из той строки которая _id = country.
Надеюсь понятно написал

Я написал так, но у меня ошибка no such table: country_ru. Не знаю почему такая ошибка, таблица есть.
SQL
1
2
SELECT DATE, CASE WHEN COUNT(DISTINCT country) > 1 THEN -1 ELSE MAX(id_color) END AS COUNT
FROM high_day, country_ru GROUP BY DATE;
0
 Аватар для Ssnake707
8 / 8 / 11
Регистрация: 02.02.2015
Сообщений: 140
12.01.2016, 10:40  [ТС]
ApXyC, Не мог бы помочь мне
0
66 / 64 / 24
Регистрация: 14.10.2014
Сообщений: 339
13.01.2016, 00:23
Фиаско ты потерпел, джойн писав, соединения условие в WHERE забыл. Боязнь ANSI Join использовать к темной стороне привести может.

SQL
1
2
3
4
5
SELECT nstd.date, CASE WHEN nstd.DCNT > 1 THEN -1 ELSE cr.id_color FROM (
    SELECT DATE, COUNT(DISTINCT country) DCNT, MAX(country) MaxCountry
    FROM high_day
    GROUP BY DATE
) nstd JOIN country_ru cr ON nstd.MaxCountry = cr.`_id`
0
 Аватар для Ssnake707
8 / 8 / 11
Регистрация: 02.02.2015
Сообщений: 140
14.01.2016, 13:46  [ТС]
ApXyC, Вывело совсем не то что надо было
результат должен быть следующим
01.01.2016 | -1
02.01.2016 | 1
03.01.2016 | 2
04.01.2016 | 3
05.01.2016 | 1
0
66 / 64 / 24
Регистрация: 14.10.2014
Сообщений: 339
14.01.2016, 19:35
А что вывело?
А какие наборы данных?
0
 Аватар для Ssnake707
8 / 8 / 11
Регистрация: 02.02.2015
Сообщений: 140
16.01.2016, 11:46  [ТС]
ApXyC,
Вывело совсем не то, вывело всё по несколько раз и с разными значениями.
Должно вывести date из таблицы high_day, потом должно вывести id_color из таблицы country_ru по contry из таблицы high_day и условие отборы такие же как и в прошлый раз
Цитата Сообщение от Ssnake707 Посмотреть сообщение
1) Дату, которая будет повторяться 1 раз (в результате запроса не должно быть одинаковых дат)
2) id страны у которой эта дата, но если эта дата есть еще у какой-то страны, т.е. одна дата у нескольких стран, то вернуть -1
в результате запроса этой БД, которую я прикрепил должно получится следующее.
дата | страна
01.01.2016 | -1
02.01.2016 | 1
03.01.2016 | 2
04.01.2016 | 3
05.01.2016 | 1
т.е. теперь вместо country (страна) должно вывести id_color
0
66 / 64 / 24
Регистрация: 14.10.2014
Сообщений: 339
16.01.2016, 17:12
Как по твоему я должен понять, что случилось если ты не показываешь результат и более того я вообще не знаю, что у тебя лежит в таблицах, может у тебя в country_ru несколько стран с одним _id?
0
 Аватар для Ssnake707
8 / 8 / 11
Регистрация: 02.02.2015
Сообщений: 140
16.01.2016, 18:18  [ТС]
ApXyC,
SQL
1
2
3
4
5
6
CREATE TABLE `country_color` (
    `_id`   INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `r` INTEGER NOT NULL,
    `g` INTEGER NOT NULL,
    `b` INTEGER NOT NULL
);
SQL
1
2
3
4
5
CREATE TABLE `country_ru` (
    `_id`   INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `name`  INTEGER NOT NULL,
    `id_color`  INTEGER NOT NULL
);
SQL
1
2
3
4
5
6
7
CREATE TABLE `high_day` (
    `_id`   INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    `country`   INTEGER NOT NULL,
    `date`  TEXT NOT NULL,
    `id_name`   INTEGER,
    `id_opisanie`   INTEGER
);
Вот результат предыдущего запроса
date | id_color
01.01.2016 | -1
01.01.2016 | -1
02.01.2016 | -1
03.01.2016 | -1
04.01.2016 | -1
01.01.2016 | 1
01.01.2016 | 1
02.01.2016 | 1
03.01.2016 | 1
04.01.2016 | 1
01.01.2016 | 2
01.01.2016 | 2
02.01.2016 | 2
03.01.2016 | 2
04.01.2016 | 2
01.01.2016 | 3
01.01.2016 | 3
02.01.2016 | 3
03.01.2016 | 3
04.01.2016 | 3
Миниатюры
Запрос к SQLite   Запрос к SQLite   Запрос к SQLite  

0
66 / 64 / 24
Регистрация: 14.10.2014
Сообщений: 339
19.01.2016, 02:26
Я в CASE пропустил END... не думал, что Sqlite сжует ошибку.
попробуй так:
SQL
1
2
3
4
5
SELECT nstd.DATE, CASE WHEN nstd.DCNT > 1 THEN -1 ELSE cr.id_color END FROM (
    SELECT DATE, COUNT(DISTINCT country) DCNT, MAX(country) MaxCountry
    FROM #high_day
    GROUP BY DATE
) nstd JOIN #country_ru cr ON nstd.MaxCountry = cr._id
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.01.2016, 02:26
Помогаю со студенческими работами здесь

Запрос на создание базы SQLITE
Помогите составить запрос на создание базы. Таблица First ID integer, not null, primary key, autoincrement Text Text ID_Text...

Задачка на создание запрос на SQlite
На таблице есть столбец с типом string. В нем хранятся Id товаров таким образом: '1,4,6,3' '1,3,9,4,12' Каким образом нужно создать...

Как именно можно сделать SQLite запрос, если запрос уже сформирован?
Здравствуйте. Помогите понять , как именно можно сделать SQLite запрос , если запрос уже сформирован Перечитал кучу информации но не могу...

SQLite запрос
Здраствуйте, у мене есть таблица events... там есть поле action_date, в етом поле дата и время в секундах, я не знаю как мне написать...

SQLite запрос
ищу минимальное значение в столбце и хочу вывести его в переменную . int nameColMill = cursor.getColumnIndex("val_two"); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru