2017-01-24 9 views
0

私はジャンクションテーブルに外部キーを参照する2つの親テーブルを持っている:のSQLite:登録しようと2つの親テーブルから取得するカラム

schoolA_courses (
id INTEGER PRIMARY KEY AUTOINCREMENT, 
course_prefix TEXT, 
course_number INTEGER, 
course_title TEXT 

schoolB_courses (
id INTEGER PRIMARY KEY AUTOINCREMENT, 
course_prefix TEXT, 
course_number INTEGER, 
course_title TEXT, 
course_url TEXT) 

schoolB_equivalencies (
equivalency_id INTEGER PRIMARY KEY AUTOINCREMENT, 
schoolA_id INTEGER NOT NULL, 
schoolB_id INTEGER NOT NULL, 
is_archived INTEGER NOT NULL, 
FOREIGN KEY (schoolA_id) REFERENCES schoolA_courses (id), 
FOREIGN KEY (schoolB_id) REFERENCES schoolB_courses (id), 
UNIQUE (schoolA_id, schoolB_id) ON CONFLICT IGNORE) 

私は両方の親テーブルにマッチした行からすべての列を選択しようとしています私のクエリは返されます -

schoolB_courses.course_prefix, 
schoolB_courses.course_number, 
schoolB_courses.course_title, 
schoolB_courses.course_url 

- 親テーブル(schoolB)から返されます。 BOTHテーブルから指定されたフィールドを取得するためにクエリを変更するにはどうすればよいですか?

schoolA_courses.course_prefix, 
schoolA_courses.course_number, 
schoolA_courses.course_title, 
schoolB_courses.course_prefix, 
schoolB_courses.course_number, 
schoolB_courses.course_title, 
schoolB_courses.course_url 

私が使用しているクエリは次のとおりです。クエリの

SELECT 
    schoolA_courses.course_prefix, 
    schoolA_courses.course_number, 
    schoolA_courses.course_title, 
    schoolB_courses.course_prefix, 
    schoolB_courses.course_number, 
    schoolB_courses.course_title, 
    schoolB_courses.course_url 
FROM schoolB_equivalencies 
INNER JOIN schoolA_courses 
ON schoolA_courses.id = schoolB_equivalencies.schoolA_id 
INNER JOIN schoolB_courses 
ON schoolB_courses.id = schoolB_equivalencies.schoolB_id'); 

結果は

array (size=2) 
    0 => 
    array (size=4) 
     'course_prefix' => string 'ARCH' (length=4) 
     'course_number' => string '111' (length=3) 
     'course_title' => string 'Introduction to Structures' (length=26) 
     'course_url' => string 'www.google.com' (length=14) 
    1 => 
    array (size=4) 
     'course_prefix' => string 'ARCH' (length=4) 
     'course_number' => string '111' (length=3) 
     'course_title' => string 'Introduction to Structures' (length=26) 
     'course_url' => string 'www.google.com' (length=14) 
+0

そして、結果の最初の3列の値は何ですか? –

+0

このクエリでは、schoolB_courses.course_prefix、 schoolB_courses.course_number、schoolB_courses.course_title、およびschoolB_courses.course_urlの値が返されますが、schoolAテーブルの値は返されません。 – Marcatectura

+0

あなたは私の質問に答えなかった。 –

答えて

1

データベースにアクセスするために使用している言語です(それが何であれ)は、インデックスで列にアクセスすることを許可せず、同じ列名で混乱します。

は、ASとの結果列の名前を変更します。

SELECT 
    schoolA_courses.course_prefix AS A_prefix, 
    schoolA_courses.course_number AS A_number, 
    schoolA_courses.course_title AS A_title, 
    schoolB_courses.course_prefix AS B_prefix, 
    ... 
関連する問題