2014-04-23 2 views
0

이 mysql 문에 대한 도움이 필요합니다. 나는 내가 친구가 아닌 친구들의 모든 친구들을 선택하길 원합니다. 지금 당장은 친구들과 친구인데도 친구들의 모든 친구를 선택합니다. 결과는 다음과 같습니다.Mysql 고급 선택

내 친구 - Bob, Joe. 추천 된 친구 - Jim, Jon, Bob

내 목록에 있기 때문에 Bob이 추천 친구 목록에 있지 않아야합니다. 고급 MySQL 문을 사용하여이 작업을 수행 할 수 있습니까, 아니면 다른 작업을 수행해야합니까? 감사!

나의 현재 SQL 코드 :

SELECT * FROM friendlist WHERE addby='$user' 

전체 코드 :

$user = $_SESSION['username']; 
$find = mysqli_query($con, "SELECT * FROM friendlist WHERE addby='$user'"); 
while($row = mysqli_fetch_assoc($find)){ 
$friend = $row['username']; 
$q = mysqli_query($con, "SELECT * FROM friendlist WHERE addby='$friend'"); 
while($row2 = mysqli_fetch_assoc($q)){ 

    if(!isset($list)){ 
     $list = ""; 
    } 
    $list .= "<a href='profile.php?u=" . $row2['username'] . "'>" .  $row2['username'] . "</a><br>";     
} 
echo "<a href='profile.php?u=" . $row['username'] . "'>" . $row['username'] . "</a> <br>"; 
} 


echo $list; 

답변

2

당신이 원하는 것을 이해하고있어 경우, 당신에게 당신이 찾고있는 결과를 제공해야하고 테이블 구조. 귀하의 구조에 대한 자세한 내용은 귀하를 대신하지 않는 경우 도움이 될 수 있습니다.

SELECT * FROM friendlist WHERE addby = '$friend' AND id NOT IN (SELECT id FROM friendlist WHERE addby = '$user'); 

당신은 (아마도, 기본 키) 테이블에서 작동 무엇에 '아이디'열을 변경해야 할 수 있습니다. 이 작업은 사용자의 모든 친구 목록을 반환해야하는 select 하위 쿼리의 결과를 필터링하여 작동합니다. 사용자의 테이블 구조가 이해된다고 가정합니다.

+0

이것은 효과가 있습니다. 고맙습니다! – jmbockhorst

+0

답변을 수락 하시겠습니까? – dsimer