Проблема со вложенным запросом

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Аватара пользователя
rsdev
Сообщения: 22
Зарегистрирован: 11 фев 2015, 13:11

Проблема со вложенным запросом

Сообщение rsdev » 11 фев 2015, 13:21

Добрый день, уважаемые android developer's
Возник следующий вопрос.
При попытке создания курсора, содержащего вложенный запрос, происходит ошибка.
Запрос выглядит так:

String sqlQuery = "SELECT word FROM words WHERE _id IN (SELECT s_id FROM synonyms WHERE w_id='123')";
Cursor Cursor = database.rawQuery(sqlQuery3, new String[] {});
PS: параметры не указывал, чтобы было меньше ошибок.

Другой вариант также не сработал:
Cursor friendCursor = database.query(TABLE_NAME,null,selection,selectionArgs,null,null,null);

Данный запрос работает при прямой работе с БД ч/з BD Browser.
Подскажите, каким образом работать со вложенными запросами?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Проблема со вложенным запросом

Сообщение Foenix » 11 фев 2015, 14:30

происходит ошибка.
Какая?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Проблема со вложенным запросом

Сообщение doter.ua » 11 фев 2015, 14:36

rsdev писал(а):Добрый день, уважаемые android developer's
Возник следующий вопрос.
При попытке создания курсора, содержащего вложенный запрос, происходит ошибка.
Запрос выглядит так:

String sqlQuery = "SELECT word FROM words WHERE _id IN (SELECT s_id FROM synonyms WHERE w_id='123')";
Cursor Cursor = database.rawQuery(sqlQuery3, new String[] {});
PS: параметры не указывал, чтобы было меньше ошибок.

Другой вариант также не сработал:
Cursor friendCursor = database.query(TABLE_NAME,null,selection,selectionArgs,null,null,null);

Данный запрос работает при прямой работе с БД ч/з BD Browser.
Подскажите, каким образом работать со вложенными запросами?
w_id='123' числа пишутся без кавычек.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
rsdev
Сообщения: 22
Зарегистрирован: 11 фев 2015, 13:11

Re: Проблема со вложенным запросом

Сообщение rsdev » 11 фев 2015, 15:32

Foenix писал(а):
происходит ошибка.
Какая?
Конечно, совсем забыл.
Изучив мат.часть подробнее, переписал курсор:

String[] vert = new String[] {"word"};
String[] whereArgsVert = new String[] {"123"};
Cursor friendCursor = database.query("TABLE_NAME", vert, "_id IN(SELECT s_id FROM synonyms WHERE w_id=?)", whereArgsVert, null, null, null);

На данный момент ошибка следующая:

android.database.sqlite.SQLiteException: no such table: TABLE_NAME (code 1): ,
while compiling: SELECT word FROM TABLE_NAME WHERE _id IN(SELECT s_id FROM synonyms WHERE w_id=?)

Подозреваю, что не смог найти нужную таблицу...

Аватара пользователя
rsdev
Сообщения: 22
Зарегистрирован: 11 фев 2015, 13:11

Re: Проблема со вложенным запросом

Сообщение rsdev » 11 фев 2015, 15:33

w_id='123' числа пишутся без кавычек.[/quote]

Совсем не собираюсь спорить с вами, но разве кавычки могут помешать?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Проблема со вложенным запросом

Сообщение Foenix » 11 фев 2015, 15:37

Кавычки или нет не важно - утебя их просто нету, ты же используешь параметры (вопросики)
ошибка переводится - нет такой таблицы TABLE_NAME , вместо этого тебе надо писать WORDS. Но опять же - используй по человечески не строковые значения - а константы. Ну это как алфавит, понимаешь?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Проблема со вложенным запросом

Сообщение Foenix » 11 фев 2015, 15:38

Вообще у тебя конечно просто ужасные именования полей в таблица и подозреваю, что сам запрос составлен неверно.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rsdev
Сообщения: 22
Зарегистрирован: 11 фев 2015, 13:11

Re: Проблема со вложенным запросом

Сообщение rsdev » 11 фев 2015, 15:41

Foenix писал(а):Вообще у тебя конечно просто ужасные именования полей в таблица и подозреваю, что сам запрос составлен неверно.
Именования полей - принято. Буду работать над "почерком"
(скажу в оправдание - код взят из разных источников)

Сам запрос проверял на живой БД ч/з BD Browser

Аватара пользователя
rsdev
Сообщения: 22
Зарегистрирован: 11 фев 2015, 13:11

Re: Проблема со вложенным запросом

Сообщение rsdev » 11 фев 2015, 15:50

Спасибо, ошибка и правда детская: заковычил переменную.
Из всего могу сделать 1 вывод: реализация вложенных запросов практическим не отличаются от простых

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Проблема со вложенным запросом

Сообщение doter.ua » 11 фев 2015, 16:05

rsdev писал(а):Спасибо, ошибка и правда детская: заковычил переменную.
Из всего могу сделать 1 вывод: реализация вложенных запросов практическим не отличаются от простых
Ну так вложенный запрос состоит из простых.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Проблема со вложенным запросом

Сообщение Foenix » 11 фев 2015, 16:48

rsdev писал(а):Спасибо, ошибка и правда детская: заковычил переменную.
Из всего могу сделать 1 вывод: реализация вложенных запросов практическим не отличаются от простых
Отсюда вывод - читать надо ,что в логе пишется.

что же касается этого запроса, то возможно тут был нужен тебе не вложенный, а обычный. С точки зрения эффективности нужно писать те запросы, которые быстрее выполняются.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rsdev
Сообщения: 22
Зарегистрирован: 11 фев 2015, 13:11

Re: Проблема со вложенным запросом

Сообщение rsdev » 12 фев 2015, 06:09

Foenix писал(а):
rsdev писал(а): что же касается этого запроса, то возможно тут был нужен тебе не вложенный, а обычный. С точки зрения эффективности нужно писать те запросы, которые быстрее выполняются.
Спасибо за совет. Имеете в виду переписать его с помощью JOIN?
Как считаете, на каком количестве записей разница будет заметна?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Проблема со вложенным запросом

Сообщение Foenix » 12 фев 2015, 12:28

я говорила "скорее всего", для того, чтоб это знать - нужно знать что за таблицы там, как связаны и так далее. Для средненьких задач хватает обычно join и where.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить