2014-02-18 3 views
-1

Я запускаю следующий запрос на sqlite. Я знаю, что есть хотя бы запись в таблице contact, хотя я не получаю никакого результата.Без результата в sqlite-запросе

SELECT * 
    FROM contact, 
     phone, 
     email 
WHERE cnt_cnt_id = phn_cnt_id 
     AND phn_cnt_id = eml_cnt_id 
     AND cnt_cnt_id = 1111 

форму моего запроса можно понять, что я пытаюсь присоединиться к этим трем таблицам. Что мне делать, чтобы извлечь данные с идентификатором 1111 из всех трех таблиц?

EDIT (таблица схемы):

private static final String CONTACT_TABLE = "create table " 
    + TABLE_NAME_CONTACT + "(" 
    + COLUMN_ID     + " integer primary key autoincrement, " 
    + COLUMN_CNT_CONTACT_ID   + " text not null, " 
    + COLUMN_CNT_FIRST_NAME   + " text not null," 
    + COLUMN_CNT_LAST_NAME   + " text not null," 
    + COLUMN_CNT_NICK_NAME   + " text not null"  
    + ");"; 

    private static final String PHONE_TABLE = "create table " 
     + TABLE_NAME_PHONE + "(" 
     + COLUMN_ID     + " integer primary key autoincrement, " 
     + COLUMN_PHN_CONTACT_ID   + " text not null, " 
     + COLUMN_PHN_NUMBER   + " text not null" 
     + ");"; 

    private static final String EMAIL_TABLE = "create table " 
     + TABLE_NAME_EMAIL + "(" 
     + COLUMN_ID     + " integer primary key autoincrement, " 
     + COLUMN_EML_CONTACT_ID   + " text not null, " 
     + COLUMN_EML_EMAIL_ID    + " text not null" 
     + ");"; 
+0

Добавлена ​​схема таблиц. – astuter

+0

Каковы значения, присутствующие в этих трех таблицах? – Mathew

+0

@Mathew: данные пользователя, как следует из названия. – astuter

ответ

0

я решил его таким образом:

SELECT * FROM 
contact LEFT JOIN phone ON cnt_cnt_id = phn_cnt_id        
      LEFT JOIN email ON phn_cnt_id = eml_cnt_id         
      WHERE cnt_cnt_id = 1111 
1

Первое, что вы не используете Foreign Key, который является обязательным для соединения двух таблиц и извлечения данных. Look here> Как работает внешний ключ.

Вы должны добавить CONTACT_ID как

Syntax :FOREIGN KEY(Child tbl id name) REFERENCES TABLE_NAME_CONTACT(Parent tbl id name) 

FOREIGN KEY(COLUMN_PHN_CONTACT_ID) REFERENCES TABLE_NAME_CONTACT(COLUMN_CNT_CONTACT_ID) 
FOREIGN KEY(COLUMN_EML_CONTACT_ID) REFERENCES TABLE_NAME_CONTACT(COLUMN_CNT_CONTACT_ID) 

Таблица схемы:

CREATE TABLE "CONTACT" (
    "cnt_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    "fname" TEXT NOT NULL, 
    "lname" TEXT NOT NULL, 
    "nickname" TEXT NOT NULL 
) 

CREATE TABLE "PHONE" (
    "ph_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    "ph_number" INTEGER NOT NULL, 
    "cnt_id" FOREIGN KEY(cnt_id) REFERENCES TABLE_NAME_CONTACT(cnt_id) 
) 

CREATE TABLE "EMAIL" (
    "email_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    "email_address" INTEGER NOT NULL, 
    "cnt_id" INTEGER NOT NULL, FOREIGN KEY(cnt_id) REFERENCES TABLE_NAME_CONTACT(cnt_id) 
) 

Adjust ваше имя таблицы & поля и для получения дополнительной контрольной проверки here

Надежда это поможет вам.

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