Error: ambiguous column name: msgs.msgcontent1
으로 돌아 오는 sqlite에 대해 다음과 같은 SELECT 문이 있지만 열 이름이 모호하지 않습니다! 아무도 내가 여기에서 놓친 것을 알아낼 수 있습니까?모호하지 않은 Sqlite 모호한 열 이름입니다. 테이블 이름이 포함됩니다.
SELECT
phone_lookup.normalized_number AS number ,
contacts.display_name AS name ,
msgs.msgcontent1
FROM
contacts2.contacts ,
temp.msgs
INNER JOIN contacts2.phone_lookup ON (contacts.name_raw_contact_id = phone_lookup.raw_contact_id)
INNER JOIN temp.msgs ON (contacts.phone_lookup.normalized_number = msgs.sender) ;
다음은 내가 귀찮은 열이있는 테이블을 작성하는 데 사용되는 문입니다 : 나는 그것이 문제와 관련이 생각하지 않지만,
CREATE TEMP TABLE msgs
AS SELECT
PART."_ID" ,
ADDR."_ID" ,
DATETIME(SUBSTR(COALESCE(PDU."DATE" , SMS."DATE") , 1 , 10) , 'localtime' , 'unixepoch') AS dt ,
COALESCE(PDU.READ , SMS.READ) AS read ,
COALESCE(SMS.ADDRESS , ADDR.ADDRESS) AS sender ,
COALESCE(SMS.BODY , COALESCE(PART.TEXT , PART."_DATA")) AS msgcontent1
FROM
mmssms.PDU
LEFT OUTER JOIN mmssms.SMS ON (PDU."DATE" = SMS."DATE")
LEFT OUTER JOIN mmssms.PART ON (PART.MID = PDU."_ID")
LEFT OUTER JOIN mmssms.ADDR ON (ADDR.MSG_ID = PDU."_ID")
WHERE
COALESCE(SMS.BODY , COALESCE(PART.TEXT , PART."_DATA")) IS NOT NULL AND ADDR."_ID" IN
(
SELECT
MIN(ADDR."_ID")
FROM
ADDR
GROUP BY
ADDR.MSG_ID
ORDER BY
ADDR."_ID"
) AND PART."_ID" IN
(
SELECT
MAX(PART."_ID")
FROM
mmssms.PART
GROUP BY
PART.MID
ORDER BY
PART."_ID"
)
UNION ALL
SELECT
PART."_ID" ,
ADDR."_ID" ,
DATETIME(SUBSTR(COALESCE(PDU."DATE" , SMS."DATE") , 1 , 10) , 'localtime' , 'unixepoch') AS dt ,
COALESCE(PDU."READ" , SMS."READ") AS read ,
COALESCE(SMS."ADDRESS" , ADDR."ADDRESS") AS sender ,
COALESCE(SMS."BODY" , COALESCE(PART."TEXT" , PART."_DATA")) AS msgcontent2
FROM
mmssms.SMS
LEFT OUTER JOIN mmssms.PDU ON (PDU."DATE" = SMS."DATE")
LEFT OUTER JOIN mmssms.PART ON (PART."MID" = PDU."_ID")
LEFT OUTER JOIN mmssms.ADDR ON (ADDR."MSG_ID" = PDU."_ID")
WHERE
COALESCE(SMS."BODY" , COALESCE(PART."TEXT" , PART."_DATA")) IS NOT NULL
ORDER BY
DATETIME(SUBSTR(COALESCE(PDU."DATE" , SMS."DATE") , 1 , 10) , 'localtime' , 'unixepoch') DESC ,
ADDR."_ID" ASC ;
마지막을, 나는 sqlite가 시작 다음 프라 그마와 명령을 내가 다에 액세스 할 수 있는지 확인하기 위해 문을 첨부 : 그것은후 좋아에게 temp.msgs
보일
PRAGMA temp_store = MEMORY ;
ATTACH '/data/data/com.android.providers.contacts/databases/contacts2.db' AS contacts2 ;
ATTACH '/data/data/com.android.providers.telephony/databases/mmssms.db' AS mmssms ;
효과가 있습니다. 고맙습니다! – HeatherLeigh