Страница 4 из 4

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 07 апр 2014, 11:33
TAMEPJlAH
Foenix писал(а):Данный урок не относится к теме
я это понимаю, но изучая Android столкнулся с такой проблемой, что не получается считать данные из БД, созданной в другой активити... Из урока 29 помню что можно вызвать активити через startActivityForResult. И, используя метод putExtra, передать данные в мою активити. Но нужно как-то различать какая кнопка нажата, чтобы не передавать все таблицы разом

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 07 апр 2014, 12:49
Foenix
осмотритесь на форуме - постоянно задается этот вопрос. Вот буквально недавно был. Вчера такой.
viewtopic.php?f=34&t=3822

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 21 апр 2014, 02:34
zapekankaaa
Здравствуйте!

у меня возникла проблема с запросом rawQuery - не получается написать запрос без псевдонимов.
Вот как описывается запрос в уроке:

Код: Выделить всё

  String sqlQuery = "select PL.name as Name, PS.name as Position, salary as Salary "
        + "from people as PL "
        + "inner join position as PS "
        + "on PL.posid = PS.id " 
        + "where salary
Моя задача была написать то же самое, но без псевдонимов, сначала я попробовала это сделать так:

Код: Выделить всё

String sqlQuery = "select people.name, position.name, position.salary"
                + "from people "
                + "inner join position"
                + "on people.posid = position.id "
                + "where salary > ?";
Результат: ошибка в логе. Я решила, что всему виной одноимённые поля в таблицах добавила 2 псевдонима для полей:

Код: Выделить всё

String sqlQuery = "select people.name as param1, position.name as param2, position.salary as Salary "
                + "from people "
                + "inner join position"
                + "on people.posid = position.id "
                + "where salary > ?";
Результат: опять ошибка в логе:
Caused by: android.database.sqlite.SQLiteException: near ".": syntax error (code 1): , while compiling: select people.name as param_1, position.name as param_2, position.salary as Salary from people inner join positionon people.posid = position.id where salary > ?

Причем когда я писала запрос совсем без псевдонимов, ошибка была такой же (имею в виду вот это: near ".": syntax error), так что я уже не вполне уверена, что дело было в одноимённых полях.
Подскажите, пожалуйста, что не так с запросом?

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 21 апр 2014, 11:27
Foenix
positionon
тут пробел поставь.

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 21 апр 2014, 16:18
zapekankaaa
positionon
тут пробел поставь.
спасибо!
после этого исправления вариант с двумя псевдонимами заработал верно.

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 21 апр 2014, 16:37
Foenix
пожалуйста. Далеко не уходи, у нас тут женщин не хватает :)

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 03 янв 2015, 10:44
Tom Vonzet
Прошу прощения, понимаю, что вопрос скорее по SQL, чем по Android, но всё же

Почему был использован inner join ? Нельзя реализовать с помощью where?
что-то типа

Код: Выделить всё

SELECT people.name, position.name, salary FROM people, position WHERE people.posid=position.id AND salary<12000;

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 04 фев 2015, 20:52
shaldem
Tom Vonzet писал(а):Прошу прощения, понимаю, что вопрос скорее по SQL, чем по Android, но всё же

Почему был использован inner join ? Нельзя реализовать с помощью where?
что-то типа

Код: Выделить всё

SELECT people.name, position.name, salary FROM people, position WHERE people.posid=position.id AND salary<12000;

В SQLLite не знаю, нужно посто попробовать, а вообще вопрос вкуса

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 18 авг 2015, 22:12
Sanya2580
Подскажите пожалуйста, хочу в этом примере добавить кнопку для полной очистки бд,не могу понять какой код нужно прописать для нее(, и еще вопрос как сделать переменные из MainActivity видными в классе DBHelper, не применяя при этом геттеры и сеттеры.

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 20 авг 2015, 10:29
Батька Андройд
Здравствуйте. Уже долго не могу сделать так что бы база данных создавалась и заполнялась в одном классе, а все остальные операции с данными из базы производились в других классах. Код написал, среда разработки ошибок никаких не выдает, но БД вообще не создается видимо потому что класс в котором она она находится не выполнился. Скажите делал кто-нибудь такую задачу?

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 20 авг 2015, 13:30
doter.ua
Батька Андройд
удали данные приложения

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 11 мар 2016, 01:46
incbot
Все очень доходчиво как обычно. Но есть вопрос. В предыдущем (36 уроке) в обработке клика был такой код:

Код: Выделить всё

 //если курсор содержит записи из выборки
        if(c != null) {
            //перейти на первую
            if(c.moveToFirst()) {
                String str;
                //цикл по всем записям курсора
                do {
                    str = "";
                    //Для каждой записи перебираем названия полей getColumnNames
                    //(аналог foreach в других языках)
                    for(String cn : c.getColumnNames()) {
                        //формируем строку вывода из таблицы
                        str = str.concat(cn + " = " + c.getString(c.getColumnIndex(cn)) + "; ");
                    }
                    Log.d(LOG_TAG, str);
                } while (c.moveToNext());
            }
            //закрыть курсор и очистить ресурсы
            c.close();
        } else Log.d(LOG_TAG, "Cursor is null");
Из которого видно, что если в курсоре ничего нет, то мы его и не закрываем... В 37 уроке (если например задать гигантскую зарплату в первом join запросе) мы закроем и курсор, который ничего не вернул. Причем это корректно работает и там и там. Как правильнее то? (подозреваю что как в 37 уроке)? Память в 36 уроке "не течет"? Поправить в уроках ничего часом не надо?

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 27 ноя 2016, 23:25
Inok13
Столкнулся с ошибкой. Для анализа скопировал весь код урока, но ситуация не изменилась. Ошибка такого рода:

Код: Выделить всё

 Caused by: android.database.sqlite.SQLiteException: no such column: PS.name (code 1): , while compiling: select PL.name as Name, PS.name as Position, salary as Salary from people as PL inner join position as PS on PL.posid = PS.id where salary > ?
. Внимание вопрос: Что я делаю не так? и Как это исправить?!

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 16 мар 2017, 10:21
vital8111
А где, простите, foreign key?

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 29 окт 2017, 08:06
Konstantin1979
При выводе в лог выводится не вся информация, заканчивается сообщением --- Table people ---

10-29 04:38:31.693 3752-3752/? D/myLogs: --- Table position ---
10-29 04:38:31.694 3752-3752/? D/myLogs: id = 1; name = Директор; salary = 15000;
10-29 04:38:31.694 3752-3752/? D/myLogs: id = 2; name = Программер; salary = 13000;
10-29 04:38:31.694 3752-3752/? D/myLogs: id = 3; name = Бухгалтер; salary = 10000;
10-29 04:38:31.694 3752-3752/? D/myLogs: id = 4; name = Охранник; salary = 8000;
10-29 04:38:31.694 3752-3752/? D/myLogs: --- ---
10-29 04:38:31.694 3752-3752/? D/myLogs: --- Table people ---

И мой вручную набитый код и скопированный с сайта с уроком дает такой результат.
Что нужно сделать чтобы получить полный лог?

Re: Урок 37. Запросы из связанных таблиц. INNER JOIN в SQLit

Добавлено: 30 окт 2017, 17:28
antonvigre
Konstantin1979 писал(а):При выводе в лог выводится не вся информация, заканчивается сообщением --- Table people ---

10-29 04:38:31.693 3752-3752/? D/myLogs: --- Table position ---
10-29 04:38:31.694 3752-3752/? D/myLogs: id = 1; name = Директор; salary = 15000;
10-29 04:38:31.694 3752-3752/? D/myLogs: id = 2; name = Программер; salary = 13000;
10-29 04:38:31.694 3752-3752/? D/myLogs: id = 3; name = Бухгалтер; salary = 10000;
10-29 04:38:31.694 3752-3752/? D/myLogs: id = 4; name = Охранник; salary = 8000;
10-29 04:38:31.694 3752-3752/? D/myLogs: --- ---
10-29 04:38:31.694 3752-3752/? D/myLogs: --- Table people ---

И мой вручную набитый код и скопированный с сайта с уроком дает такой результат.
Что нужно сделать чтобы получить полный лог?
Абсолютно аналогичная ситуация.