2014-02-10 3 views
0

난 다음 표에 봉착 :MySQL의 쿼리 - 까다로운 조금

SELECT * FROM 
    users Inner Join 
    items On users.user_id = items.user_id 

질문은 다음과 같습니다 :

USERS:        ITEMS 

user_id name always_show   id user_id name 
--------------------------   -------------------------------- 
1  Joe       1 1  Apple 
2  Sam       2 1  Banana 
3  Walter 1     3 2  Cherry 

를 내가이 쿼리하고있어 내가 다른 모든 사용자를 추가 할 수있는 방법을있는 플래그 always_show를 설정 했습니까?

+0

을 시도 내가 당신의 질문을 이해 희망? 1 : 1? 1 : n? n : 1? n : m? 내부 조인을 사용하고 있으므로 1 : 1 릴레이션입니다. – Tularis

답변

1

은 내가 :-) 테이블 사이의 관계는 무엇인가 UNION

SELECT u.* FROM users u 
INNER JOIN items i ON u.user_id = i.user_id 

UNION ALL SELECT * FROM users WHERE always_show = 1 
+0

미안하지만, 나에게 오류를 준다. – Fuxi

+0

@Fuxi 내가 노조에서 선택을 잊었다 ... 다시 시도해라! – silly

+0

감사합니다! 매력처럼 작동합니다 :) – Fuxi

0
SELECT * 
FROM users 
INNER JOIN items On users.user_id = items.user_id 
UNION 
SELECT * 
FROM users 
LEFT OUTER JOIN items On users.user_id = items.user_id AND users.always_show = 1 
+0

이것은 거의 정확한 것 같습니다, 그러나 중복 기록을 얻고 있습니다 : 조, 조, 샘, 조, 샘, 월터 – Fuxi

+0

내 나쁜 .. 거기에'ALL'은 필요하지 않았습니다. 답변이 업데이트되었습니다. – StevieG

0
SELECT * FROM 
    users Inner Join 
    items On users.user_id = items.user_id where Users.always_set = 1 
+0

는 0 레코드를 반환합니다. / – Fuxi