SQL

2009-11-19 3 views
0
나는 그것이 고정있어하지만 난이 시도 내가이 다른 problem- 4 개 그 안에 기록과 내 SQL이있는 테이블은 세 개의 레코드

SQL

을 반환하지하는 이전에 질문을 게시

SELECT * 
FROM items 
JOIN lists ON items.id = lists.item 
WHERE lists.user = '506161637' 
LIMIT 0 , 30 

목록 테이블이 아래에 나열되어 있으며 8,6,5

로 레코드를 반환 유형은 여기에서

SELECT items.id, items.link, items.title, items.image, lists.user, lists.dated 
    FROM lists, items 
WHERE lists.user = '506161637' 
    AND lists.item = items.id 
ORDER BY lists.dated; 

... 그리고 다른이 가입

id user  item dated 
--------------------------------- 
20 506161637 1  2009-11-19 
19 506161637 8  2009-11-19 
18 506161637 6  2009-11-19 
17 506161637 5  2009-11-18 
+0

id가 1 인 항목 테이블에 항목이 있습니까? –

+0

항목 ID 1의 항목 표를 확인 했습니까? –

+0

속도가 느려짐 : –

답변

0

'items'테이블의 레코드와 합치면 3 개의 레코드 만 있다고 믿습니다.

1

명백한 대답은 조인이 행 1에 대한 조인 기준에 실패하고 있다는 것입니다. Items 테이블에 id가 lists.item 인 항목이없는 것 같습니다.

3

데이터를 보지 않고 항목 테이블에 '항목'숫자 중 하나가 존재하지 않는다고 가정하므로 해당 항목에 참여할 수 없습니다. 이 경우 'list'요소를 반환하려면 왼쪽 조인 (또는 먼저 선택한 항목에 따라 오른쪽 조인)을 사용할 수 있습니다.

예 :

SELECT * 
    FROM items 
LEFT JOIN lists ON items.id = lists.item 
    WHERE lists.user = '506161637' 
    LIMIT 0 , 30 

이 전혀 SQL과 함께 할 아무것도하지 않았다, left joins

+0

"RIGHT JOIN"을 "LEFT JOIN" –

0

죄송합니다 사람에이 페이지를 참조하십시오. 코드를 함수로 자르고 변수 이름을 변경하지 않고 코드가 배열이되어 첫 번째 숫자 만 실제로 db로 들어갑니다.

감사합니다.