2012-02-06 4 views
0

Я новичок в разработке Android.Как получить данные из более чем одной таблицы

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

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

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

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

создать таблицу песню (song_id первичного ключа, автоинкремент, SONG_NAME текст не нулевой, SONG_TITLE текст не пустой, tracksong_id целое, tracksong_id целое, FOREIGN KEY (tracksong_id) ЛИТЕРАТУРЫ альбом (album_id))

Для получения всех Песенка

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

{

AlbumDTO occasionDTO = NULL;

Курсор с = db.query (DATABASE_TABLE_SONG, новый String [] {KEY_SONG_NAME, KEY_SONG_TITEL, TRACKSONGID}, TRACKSONGID + "=" + идентификатор, NULL, NULL, NULL, NULL);

, если (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)); 

}

близко();

возвращение товара по случаюDTO;

}

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

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

+0

Попробуйте найти контент-провайдеров. – JoxTraex

+0

Как вы связываете обе таблицы, которые у вас есть, с одним общим столбцом в обеих таблицах по этому столбцу, вы можете получить данные из обеих таблиц. –

+0

@arpit ответить обновлено – Hank

ответ

1

Alright, это то, что вы хотите:

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

спасибо за ответ, но нет необходимости делать чужой key.plz, чтобы проверить этот http: // stackoverflow.ком/вопросы/9159824/беда-в-featching-данных из-таблиц – arpit

0

таблица 1 col1 col2 col3

таблица 2 col1 col2 col3

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

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

здесь a1 и a2 являются псевдонимами

Смежные вопросы