2010-01-05 9 views
0

일부 select 문에 문제가 있습니다.2 테이블에서 정보 얻기

2 개의 테이블이 있습니다. sms_log 및 sms_messages.

sms_log :

id 
message_id 
user_id 

sms_messages :

message_id 
admin_id 
message 
date_sent 
date_delivered 

나는 sms_log.user_id = $ ID가

내가 그것을 어떻게해야합니까, 조금 붙어 인스턴트 메신저 sms_message 데이터를 얻으려면 . 또한, 내가 어떻게 셀의 앞에 표준 쿼리로, 또는 테이블 이름과 정확히 같은, PHP를 통해 액세스됩니다

` 
echo $myrow['sms_messages.message']; 

또는

echo $myrow['message']; 

감사합니다!

+0

죄송는 데이터베이스 선택 질문 ORM 사용중인가요 -

이 테이블은 실제로 (OK SMS 메시지를 무엇을 의미합니까?.? Join 테이블 쿼리를 수행하기 위해 Propel을 사용할 수 있습니다. – Tommy

답변

1
 
select m.message as message 
, m.date_sent as date_sent 
FROM sms_messages as m 
LEFT JOIN sms_log as l 
ON m.message_id = l.message_id 
WHERE l.user_id = $id 

하는 당신은 아직 할 수있을 것입니다 :이 시점에서

SELECT m.Message 
FROM sms_Messages me 
INNER JOIN sms_Log l ON l.Message_Id = m.Message_Id 
Where l.user_Id = $id; 

, 당신의 myrow 변수에, 당신은 같은 메시지에 액세스하는 것 예상대로 배열 액세스 : 스티븐의 용감한 시도에도 불구하고

 
echo $arr['message'] ' sent on ' $arr['date_sent'] ; 
+0

광산은 조금 더 장황하지만 표면 상으로는 똑같습니다 - 그래서 나는 똑같이 남겨 둘 것입니다. – Cups

1

먼저 messageId의 SMS_MESSAGe 및 SMS_LOG 테이블에서 내부 조인을 수행해야합니다. 이 같은이 모양 일 :

echo $myrow['message']; 
+0

$ result = mysql_query ("SELECT m.message FROM sms_messages me INNER JOIN sms_log l ON l.message_id = m.message_id WHERE l.user_id = '$ id'"); 그게 작동하지 않는 것 같습니까? – user195257

1

, 그것은 꼬마 도깨비입니다 두 테이블을 조인하는 방법을 제공 한 정보에서 결정할 수 있습니다. 각 테이블에 message_id라는 열이 있다는 사실은 그 테이블이 다른 테이블이 아닌 하나의 외래 키일 수 있음을 의미합니다.

테이블에 대해 선언 된 기본 키가 있습니까? 고유 색인은 무엇입니까?

자신의 데이터 디자인입니까 아니면 다른 사람입니까? 열의 데이터 형식은 무엇입니까? 어떤 DBMS를 사용하고 있습니까? 시퀀스 생성기 또는 mysql 자동 증가로 채워진 열이 있습니까? 나는 것을 얻을 수 있지만, 그냥 들어오는 있습니다

C.