Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Получить количество подчиненных в SQLite - Программирование Android

27.06.2014, 05:22. Просмотров 528. Ответов 4
Метки нет (Все метки)

Не нашел отдельной ветке по SQLite, поэтому решил задать сюда (это нужно для андроида)

Помогите составить запрос... уже перебрал сотни вариантов... и не могу угадать!

Есть две таблицы - одна подчинена другой.
1) t1.id, t1.name
2) t2.t1_id, не нужные сейчас поля (параметры t1)...

Надо получить нечто вроде
t1.id, t1.name, количество подчиненных к этой записи из t2 или 0 если их нет.

По идее должно было быть так:
SQL
1
SELECT t1.id, t1.name, (SELECT COUNT(*) FROM t2 WHERE (t2.t1_id = t1.id)) AS co2 FROM t1
но неработает! не знает столбец t1.id в WHERE! А так работает:
SQL
1
SELECT t1.id, t1.name, (SELECT COUNT(*) FROM t2 WHERE (t2.t1_id = 123)) AS co2 FROM t1
Перепробовал и через LEFT JOIN - тоже не понял как связать...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2014, 05:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получить количество подчиненных в SQLite (Программирование Android):

Можно-ли в SQLite получить все поля - Программирование Android
CREATE TABLE IF NOT EXISTS "Table1" ( "_id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "name" TEXT UNIQUE, ...

ListView ячейки, получить Id элемента из SQLite - Программирование Android
есть база данных SQLITE. некоторые элементы БД выводятся в ListView через адаптер и вспомогательный XML. моя задача - в onItemClick перейти...

SQLite как получить номер записи из INSERT - Программирование Android
Собственно САБЖ. Не знаю команды. Уже все перерыл! :( Есть база с id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT Добавляю новую запись и...

Получить количество строк в TextView (ListView) - Программирование Android
привет всем. уже очень давно никак не могу получить количество строк в TextView который находится в ListView. каждый итем - TextView. ...

Получить количество записей в таблице SQLite - Lazarus
В процессе создания приложения возникла огромная куча вопросов по работе с БД в Lazarus. Вот несколько наиболее актуальных для меня...

.NET 3.x SQLite: как выполнить команду, чтобы получить в int переменную количество строк в таблице - C#
конкретный вопрос вот в чем command.CommandText = @"SELECT COUNT(clientID) FROM clients"; как выполнить команду, чтобы получить в int...

4
dan41k
]:->
98 / 92 / 13
Регистрация: 12.11.2013
Сообщений: 398
27.06.2014, 10:58 #2
SQL
1
SELECT t1.id, t1.name FROM t1 JOIN t2 ON t1.id = t2.t1_id
Может так, если я правильно понял
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
27.06.2014, 19:37  [ТС] #3
Цитата Сообщение от dan41k Посмотреть сообщение
Может так, если я правильно понял
Неа! мне нужны все поля из первой таблицы и количество подчиненных полей из таблицы №2 где t2.t1_id = t1.id
А Ваш запрос просто покажет все поля первой таблицы... И кажется даже вообще проигнорирует вторую.

Полей много (в районе 1000 пока) и перезапрашивать SELECT COUNT(*) FROM t2 WHERE (t2.t1_id = 123) перебором для каждого поля в момент вывода будет долго...

Добавлено через 8 часов 27 минут
Ну-же! Пожа-а-алуста! Думал для знатоков это простой вопрос! Хотя-бы скажите ВОЗМОЖНО ЛИ ПОДОБНОЕ?
Или прийдется все-таки перебором делать? Пока застрял и жду Вашего ответа...
0
NEbO
587 / 455 / 49
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
Завершенные тесты: 2
27.06.2014, 19:57 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если я правильно понял вопрос:
SQL
1
2
3
4
5
6
7
8
9
sqlite> CREATE TABLE t1(id INT, name TEXT);
sqlite> CREATE TABLE t2(t1_id INT, test_fld TEXT DEFAULT NULL);
sqlite> INSERT INTO t1 VALUES(1,"name1"),(2,"name2"),(3,"name3"),(4,"name4");
sqlite> INSERT INTO t2(t1_id) VALUES(1),(2),(1),(1),(1),(3),(2),(2);
sqlite> SELECT t1.id,t1.name,COUNT(t2.t1_id) FROM t1 LEFT JOIN t2 ON t1.id=t2.t1_id GROUP BY t2.t1_id;
4|name4|0
1|name1|4
2|name2|3
3|name3|1
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
27.06.2014, 21:54  [ТС] #5
Спасибо! Сильно помогли! Почти то что нужно! Но натолкнули на мысль...
Только
SQL
1
SELECT t1.id,t1.name,COUNT(t2.t1_id) FROM t1 LEFT JOIN t2 ON t1.id=t2.t1_id GROUP BY t1.id;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 21:54
Привет! Вот еще темы с ответами:

Определить количество булевых функций, подчиненных условию - Логика и множества
Определите количество булевых функций f(x1,x2,x3,x4), подчиненных условию: значения f(x1,x2,x3,x4) совпадают при произвольных x4 \in {0,1},...

Получить запись из SQLite - C++ Qt
Как используя класс QSqlRecord получить данные из SQLite зная только id строчки? Я использую такой код в цикле for (int i = 0; i <...

Получить массив байтов из БД SQlite - C#
Всем привет, не могу получить массив байтов из БД уже голову себе поломал, как это сделать.. На форуме видел Пример выборки строк из БД....

Qt Mac OS, не удаётся получить данные в SQLite - C++ Qt
Здравствуйте, уважаемые формучане, у меня такая проблема: Подключился к БД, написал запрос для получения данных: #include...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
27.06.2014, 21:54
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru