2012-04-01 6 views
1

테이블이 FOLDERS인데, 폴더가 PHP 페이지를 통해 추가 될 때마다 FOLDERS에 삽입됩니다. 각 폴더에는 다음 필드가 있습니다. id,userid,foldernamemysql은 추가 된 테이블의 모든 행을 표시합니다.

제 질문을 이해하기 쉽게 표를 단순화했습니다.

ID UID FOLDERNAME

1 - 1 - 도서

1 - 2 - 영수증

3 - NULL - 책

4 - NULL - 영수증

5 - NULL - 집

6 - 2 - 영수증

결과로 다섯 번째 행을 얻는 방법을 알고 싶습니다. 조건은 다음과 같습니다. 행 5가 UID (비어 있음)를 가지며 uid와 함 2 존재하지 않는다는 사실. 내가 사용할 때 :

$sql="SELECT * FROM folders WHERE userid=''"; 

이것은 빈 사용자 ID가있는 모든 행을 반환합니다. UID = 1에 이미 폴더 영수증과 장부 세트가 있으므로 결과적으로 5 개만 필요합니다. 어떤 제안이라도 2 시간 동안이 문제를 해결하는 데 도움이됩니다. 당신이

답변

5

다른 행에 userid을해야합니까 모든 별개의 폴더 이름을 반환하는 NOT IN() 하위 쿼리와 널 (null) 사용자 ID 행에 대한 조건 userid IS NULL을 결합 감사드립니다.

SELECT * 
FROM hpoptions 
WHERE 
    userid IS NULL 
    AND foldername NOT IN (
    SELECT DISTINCT foldername FROM hpoptions WHERE userid IS NOT NULL 
) 
+0

멋진 작품처럼 놀랍습니다. – cppit

관련 문제