4 개의 테이블이있는 데이터베이스가 있습니다.하나가 아닌 두 개의 필드로 두 테이블의 내부 조인 수행
설정
영화
트레일러
리뷰
final String SQL_CREATE_MOVIE__SETTING_TABLE = "CREATE TABLE " + MovieContract.MovieSettings.TABLE_NAME + " (" +
MovieContract.MovieEntry._ID + " INTEGER PRIMARY KEY, " +
MovieContract.MovieSettings.COL_MOVIE_SETTING + " TEXT UNIQUE NOT NULL " +
");";
final String SQL_CREATE_MOVIE_TABLE = "CREATE TABLE " + MovieContract.MovieEntry.TABLE_NAME + " (" +
MovieContract.MovieEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
MovieContract.MovieEntry.COL_MOVIE_KEY + " INTEGER NOT NULL, " +
MovieContract.MovieEntry.COL_MOVIE_ID + " INTEGER NOT NULL, " +
MovieContract.MovieEntry.COL_BACKDROP_PATH + " TEXT NOT NULL, " +
MovieContract.MovieEntry.COL_ORIGINAL_LANGUAGE + " TEXT NOT NULL, " +
MovieContract.MovieEntry.COL_ORIGINAL_TITLE + " TEXT NOT NULL," +
MovieContract.MovieEntry.COL_OVERVIEW + " TEXT NOT NULL, " +
MovieContract.MovieEntry.COL_TITLE + " TEXT NOT NULL, " +
MovieContract.MovieEntry.COL_VOTE_AVERAGE + " REAL NOT NULL, " +
MovieContract.MovieEntry.COL_VOTE_COUNT + " INTEGER NOT NULL, " +
MovieContract.MovieEntry.COL_POSTER_PATH + " TEXT NOT NULL, " +
MovieContract.MovieEntry.COL_DATE + " TEXT NOT NULL, " +
// Set up the location column as a foreign key to location table.
" FOREIGN KEY (" + MovieContract.MovieEntry.COL_MOVIE_KEY + ") REFERENCES " +
MovieContract.MovieSettings.TABLE_NAME + " (" + MovieContract.MovieSettings._ID + "), " +
// To assure the application have just one weather entry per day
// per location, it's created a UNIQUE constraint with REPLACE strategy
" UNIQUE (" + MovieContract.MovieEntry.COL_DATE + ", " +
MovieContract.MovieEntry.COL_MOVIE_KEY + ") ON CONFLICT REPLACE);";
final String SQL_CREATE_TRAILER_TABLE = "CREATE TABLE " + MovieContract.TrailerEntry.TABLE_NAME + " (" +
MovieContract.TrailerEntry._ID + " INTEGER PRIMARY KEY," +
MovieContract.TrailerEntry.COL_MOVIE_ID + " INTEGER NOT NULL, " +
MovieContract.TrailerEntry.COL_TRAILER_ID + " TEXT NOT NULL, " +
MovieContract.TrailerEntry.COL_ISO_369_1 + " TEXT NOT NULL, " +
MovieContract.TrailerEntry.COL_KEY + " TEXT NOT NULL, " +
MovieContract.TrailerEntry.COL_NAME + " TEXT NOT NULL, " +
MovieContract.TrailerEntry.COL_SITE + " TEXT NOT NULL, " +
MovieContract.TrailerEntry.COL_SIZE + " TEXT NOT NULL, " +
MovieContract.TrailerEntry.COL_TYPE + " TEXT NOT NULL, " +
// Set up the movie_id column as a foreign key to movie table.
" FOREIGN KEY (" + MovieContract.TrailerEntry.COL_MOVIE_ID + ") REFERENCES " +
MovieContract.MovieEntry.TABLE_NAME + " (" + MovieContract.MovieEntry.COL_MOVIE_ID + ") " +
" UNIQUE (" + MovieContract.TrailerEntry.COL_MOVIE_ID + ", " +
MovieContract.TrailerEntry.COL_TRAILER_ID + ") ON CONFLICT REPLACE);";
final String SQL_CREATE_REVIEW_TABLE = "CREATE TABLE " + MovieContract.ReviewEntry.TABLE_NAME + " (" +
MovieContract.ReviewEntry._ID + " INTEGER PRIMARY KEY," +
MovieContract.ReviewEntry.COL_MOVIE_ID + " INTEGER NOT NULL, " +
MovieContract.ReviewEntry.COL_REVIEW_ID + " TEXT NOT NULL, " +
MovieContract.ReviewEntry.COL_AUTHOR + " TEXT NOT NULL, " +
MovieContract.ReviewEntry.COL_CONTENT + " TEXT NOT NULL, " +
MovieContract.ReviewEntry.COL_URL + " TEXT NOT NULL, " +
// Set up the movie_id column as a foreign key to movie table.
" FOREIGN KEY (" + MovieContract.ReviewEntry.COL_MOVIE_ID + ") REFERENCES " +
MovieContract.MovieEntry.TABLE_NAME + " (" + MovieContract.MovieEntry.COL_MOVIE_ID + ") " +
" UNIQUE (" + MovieContract.ReviewEntry.COL_MOVIE_ID + ", " +
MovieContract.ReviewEntry.COL_REVIEW_ID + ") ON CONFLICT REPLACE);";
내가있는 지금 원하는 예고편 테이블을 영화 테이블에 결합하십시오. 따라서 새 트레일러 테이블에는 다음과 같은 열이 있어야합니다.
----------------------------------------------------------------------------------
|_id |movie_id |poster_path |id |iso_639_1 |key |name |site |size |type |
두 는 열 영화 테이블에 속하는 및 poster_path을 movie_id. 나는 내가 poster_path 열이없는이 테이블
--------------------------------------------------------------------
|_id |movie_id |id |iso_639_1 |key |name |site |size |type |
를 얻을 그러나
sTrailerByMovieIdQueryBuilder.setTables(
MovieContract.TrailerEntry.TABLE_NAME + " INNER JOIN " +
MovieContract.MovieEntry.TABLE_NAME + " ON " +
MovieContract.TrailerEntry.TABLE_NAME + "." +
MovieContract.TrailerEntry.COL_MOVIE_ID + " = " +
MovieContract.MovieEntry.TABLE_NAME + "." +
MovieContract.MovieEntry.COL_MOVIE_ID + " AND " +
MovieContract.MovieEntry.TABLE_NAME + "." +
MovieContract.MovieEntry.COL_POSTER_PATH
);
로 내부 조인 수행합니다. 내 속속들이 뭔가 잘못 했어.하지만 어떻게 고쳐야할지 모르겠다.
감사합니다.
테오.
을 그리고 당신은 하나의 테이블 열을 언급 :
귀하의 질의는 다음과 같아야합니다. https://stackoverflow.com/questions/2366780/how-to-do-an-inner-join-on-multiple-columns –