2011-02-23 6 views
0

두 개의 데이터 테이블이 있습니다. 하나는 사용자 식별 정보 (사용자 이름, id 등)를 모두 포함하고 나머지는 그들에 의해 생성 된 내용입니다. 나는 코멘트 페이지를하고있다. 그래서 그들이 의견을 제출할 때, 그들의 user_id는 주석과 함께 들어갑니다. 이제 코멘트 페이지에서 모든 코멘트를 보여줄 질의를하고 있지만, user_id를 사용하여 user_database에서 이름을 가져온다. 아래의 쿼리를 성공없이 사용하고 있습니다. 어떻게 조정할 수 있습니까?정보를 얻기위한 두 개의 쿼리

코드 :

$query="SELECT * FROM comments where post_id = '$postid'"; 
    $result=mysql_query($query); 

    $num=mysql_numrows($result); 

    mysql_close(); 

    echo ""; 

    $i=0; 
    while ($i < $num) { 

    $comment=mysql_result($result,$i,"comment"); 
    $user_id=mysql_result($result,$i,"user_id"); 
    $other=mysql_result($result,$i,"other"); 


    echo "<br>$comment, $user_id, $other"; 

    echo ""; 

    $i++; 
    } 

    if(mysql_num_rows($result) < 1) { 
     echo "<div id=noresultfound>No results for $comment</div>"; 
     } 
+3

어떤 오류가 발생합니까? 테이블 구조가 뭐니? –

+0

오류가 없습니다. 이 쿼리에서 $ user_id를 사용하여 사용자의 이름을 가져올 수있는 방법은 무엇입니까 ... – AAA

+1

테이블 구조가 무엇입니까? 모든 관련 테이블에 대해'SHOW CREATE TABLE yourtable'을 게시하십시오. –

답변

2

단일 쿼리에 두 테이블에서 정보를 얻으려면, 당신이 사용할 수있는 조인 사용할 수

SELECT 
    c.userid, 
    c.comment, 
    u.username, 
    ...etc... 
FROM comments AS c 
JOIN user_database AS u 
ON c.user_id = u.user_id 
WHERE post_id = '42' 
+2

+1하지만 검색 할 데이터 집합을 줄이기 위해 반환하고 싶은 열을 지정했습니다. –

+1

@ 존 캐번 : +1 예 전적으로 동의합니다. 나는 정확한 테이블 정보 (질문에 대한 주석 참조)를 게시하여 내가 이것을 할 수 있도록 추진하고있다. 그때까지 실제 열 이름에 대한 자리 표시자를 포함하도록 답변을 업데이트했습니다. –

2

는 동일한 쿼리에 두 테이블에서 데이터를 가져하기 "SQL JOIN". 예를 들어

:이 쿼리는 각각 공통으로 사용자가 두 테이블에서 모든 열을 끌어

select c.*, u.* from comments c join users u on u.id = c.user_id

.

Read more here.

2
내가 그런 다음 사용자 테이블

SELECT * FROM comments LEFT JOIN users ON comments.user_id = users.user_id WHERE post_id = '$postid' 
에 가입하여 SQL을 수정보고 다음

$query="SELECT * FROM comments where post_id = '$postid'"; 
$result=mysql_query($query); 
while($row = mysql_fetch_assoc($result)) 
{ 
    echo "<br>".$row['comment'].", ".$row['user_id'].", ".$row['other']; 
} 

의 라인을 따라 뭔가를 할 약간 코드를 변경 시작할 것

그리고 그 사람의 이름을 얻을 수 있습니다

$row['name']; 
관련 문제