как получить данные из более чем одной таблицы - PullRequest
0 голосов
/ 06 февраля 2012

Я новичок в разработке для Android.

Я храню список альбомов в таблице со следующими столбцами: albumid, albumname.

В таблице песен есть следующие столбцы: songid, song_title, trackong_id, где trackong_id - это внешний ключ, который относится к идентификатору альбома.

Мой запрос на создание таблицы для таблицы песен:

создание таблицы альбомов (идентификатор целого числа с первичным ключом, автоинкремент, текст имени альбома))

создание табличной песни (автоинкремент первичного ключа целого числа song_id, текст песни не равным null, текст song_title не пусто, целое число trackong_id, целое число trackong_id, ключ FOREIGN (trackong_id) альбом REFERENCES (album_id))

Для извлечения всех деталей песни

общедоступный AlbumDTO getSOngById (длинный идентификатор)

{

AlbumDTO eventDTO = null;

Курсор c = db.query (DATABASE_TABLE_SONG), новая строка [] {KEY_SONG_NAME, KEY_SONG_TITEL, TRACKSONGID}, TRACKSONGID + "=" + id, ноль, ноль, ноль, ноль);

if (c.moveToNext ())

{

occasionDTO=new AlbumDTO();

//occasionDTO.song_id=c.getLong(c.getColumnIndex(KEY_SONG_ID));

occasionDTO.song_name=c.getString(c.getColumnIndex(KEY_SONG_NAME)).trim();

occasionDTO.song_title=c.getString(c.getColumnIndex(KEY_SONG_TITEL)).trim();

occasionDTO.tracksong_id=c.getLong(c.getColumnIndex(TRACKSONGID));

}

close ();

return eventDTO;

}

Как получить все данные из обеих таблиц?Один альбом может содержать много песен.

Спасибо за поддержку

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Хорошо, это то, что вы хотите:

public static final String TABLE_SONG_JOIN_ALBUM = "song LEFT JOIN album ON sone. tracksong_id = album.id";
public static final String[] PROJECTION = new String[] {
    "song.song_name",
    "album.album_name"
    // maybe you want more field here
};

public AlbumDTO getSOngById(long id) {
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
    qb.setTables(TABLE_SONG_JOIN_ALBUM);
    String selection = "song.id = "+id;
    SQLiteDatabase db = dbHelper.getReadableDatabase();
    Cursor c = qb.query(db, PROJECTION, selection, null, null, null, sortOrder, null);

    AlbumDTO occasionDTO=null;
    if(c.moveToNext()) {
        occasionDTO=new AlbumDTO();
        occasionDTO.song_id=c.getLong(c.getColumnIndex(KEY_SONG_ID));
        occasionDTO.song_name=c.getString(c.getColumnIndex(KEY_SONG_NAME)).trim();
        occasionDTO.song_title=c.getString(c.getColumnIndex(KEY_SONG_TITEL)).trim();
        occasionDTO.tracksong_id=c.getLong(c.getColumnIndex(TRACKSONGID));
    }

    db.close();
    return occasionDTO;
}
0 голосов
/ 06 февраля 2012

таблица 1 col1 col2 col3

таблица 2 col1 col2 col3

если мы хотим выбрать один столбец из обеих таблиц, тогда полезен следующий запрос

"выберите a1.col1, a2.col1 из таблицы1 a1, таблицы2 a2, где; "

здесь a1 и a2 - псевдоним

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...