2012-10-11 2 views
0

내 데이터베이스에 TOPICS 테이블이 있는데, 어느 사용자가 열 었는지 명시하지 않았습니다. 그러나 내 MESSAGES 테이블에는 USER 열이있어서 열어 본 사용자가 표시됩니다. 제 질문은 : TOPICS 테이블에 사용자가있는 열을 어떻게 가져 와서이 정보를 가져올 수 있습니까?데이터베이스에 항목을 게시 한 사용자 추가

지금, 나는 각 프로필에서 사용자의 마지막 메시지를 가지고 있지만, 말했듯이 그러한 열이 TOPICS에 없기 때문에, 나는, 주제와 topicname에 대한 링크를 표시하지 수 있습니다. 어떻게하면 가능합니까?

$lastpost = execute_scalar("SELECT message FROM messages where messages.user='$who' Order by date desc"); 

지금 내가 주제에 대해 동일한 작업을 수행해야합니다

나는 일 사용자의 마지막 메시지를 가져 오기 위해이를 사용했다. 내가 당신의 요구를 이해 알고 있지만, 내가 틀렸다면 정정 해줘 그나마

답변

0

...

당신이 할 수있는 ...

1 - 사용자 테이블에 열을 추가 'LastTopicId'

2 - 날짜와 사용자 및 주제에 대한 외래 키와 'UserOpenTopic'새 테이블을 만들 ... 그래서 당신은

$lastpost = query("SELECT topic.TopicName FROM UserOpenTopic INNER JOIN topic ON topic.ID = UserOpenTopic.TopicID where UserOpenTopic.userID='$who' Order by date desc");

쿼리 할 수 ​​있습니다 그리고 당신은 수오 메시지을 주제 1 개 관계 : LD는

+0

열 사용자를 추가해도 사용자가 표시되지 않는 것이 문제입니다. IP 주소, ID 등을 표시하지만 사용자 나 그 밖의 것은 표시되지 않습니다. – user1717526

0

나는 메시지가 항상 주제와 관련된 이해, 그래서 당신은 N을 추가해야합니다 ... 주제에 대한 모든 사용자에 대한 마지막 주제 (및 전체 역사)가 있습니다. 테이블 스키마의 필드와 명명 규칙의 유형에 따라 그 결과는 아래와 같습니다 : 관계는 물론 존재해야 아이디에 외래 키로 실제로 구축이다

ALTER TABLE `messages` ADD `topicId` INT NOT NULL; 

이 경우 귀하의 표 주제. 메시지를 저장할 때 이와 관련된 topicID (또는 표 주제의 해당 기본 키)도 저장해야합니다. 메시지를 가져올 때는 다음과 같이 입력해야합니다.

자세한 예제는 mysql 설명서 (CREATE, ALTER 및 SELECT 구문)를 확인하십시오. ORM을 사용하는 경우 빌드 및 처리에 대한 예제를 확인하십시오. hasMany 관계.

+0

첫 번째 코드에서 제안한대로 열을 추가했지만 사용자가 표시되지 않습니다. 항목 열에 사용자 열을 추가하려고했지만 모든 곳에서 0을 사용했습니다. – user1717526

관련 문제