2014-07-17 2 views
0

제목에 대해 유감스럽게도 짧은 방법으로 문제를 설명하는 방법을 알지 못했습니다.다른 사람의 도움을 받아 하나의 테이블로 데이터 형식을 얻는 것

내가 (오른쪽 태그) 정확한 위치를 부탁 해요 만약 내가 너희들이 이해하는 방식으로, 잘 모르겠지만, 내가 :)

우선 모든을 다할 것입니다, 내 영어가 아니다 좋은, 그리고 내 문제를 설명하기가 어렵습니다. :)

내 테이블에 다음과 같은 질문을하고 싶습니다. DB에 2 개의 테이블이 있습니다. 하나 db_users 및 db_tasks

db_users : [UID] uName의 [uActive]

db_tasks [TID] tUserId [T1] [T2] (T3)], T4 [T5] [T6] [tYear]

나는이 같은 사용자 ID와 함께 연결 : UID = tUserId

그리고 난 단지 WANNER은 tYear가 wher 0 공업 task5 (T5)와 task6 (T6)를 얻었다 그리고 db_users에서 사용자를 얻을 2014

모든 사용자가 해결 과제를 해결하지 못했습니다. 그래서 모든 사용자가 db_tasks 일부 사용자가 해결 한 작업 1과 2에 등록되어 db_tasks

에 등록되어 있지 내가 데이터에 따라 좀하고 싶습니다

: uName의 UID를, 그리고 사용자가 다음 db_tasks에 있으면 나는 것 사용자가 db_tasks tId = 0에 있지 않으면 tId = tId와 같습니다.

나는 하나의 sql = "select ..... 쿼리에 모든 것을 원합니다. 내 뷰어에서 인쇄하십시오 (이 페이지는 MVC 프랜차이즈에 있습니다).

나는이처럼 내 페이지의 목록을하고 싶습니다 : 케이스와 내가 생각할 수있는 모든 것을,하지만 아무것도 작동하는 경우

echo $uId.' - '.$uName.' ('if($tId > 0){ echo 0; } else { echo $tId }')'; 

나는 가입하는 것을 시도했다. 테이블과 데이터베이스 구조를 변경하지 않고 원하는 것을 할 수 있습니까?

가있는 경우는 모든 사용자와 TID를 얻을 수

답변

1

은 ...

SELECT uId, uName, COALESCE(tId, 0) 
FROM db_users u LEFT JOIN db_tasks t 
ON u.uId=t.tUserId 

이 내가 이러한 도움을 희망 2014

SELECT uId, uName, tId FROM db_users u INNER JOIN db_tasks t 
ON u.uId=t.tUserId WHERE tYear=2014 
AND (t5=0 OR t6=0) 

에 T5 및 T6에 0이있는 사용자를 얻는 것입니다 나는 잘 이해하고 있는지 확신 할 수 없지만, 여기서 나가서 원하는 것을 얻을 수 있다고 확신합니다.

SELECT uId, uName, 0 as tId FROM db_users 
WHERE uId NOT IN (SELECT tUserId FROM db_tasks) 
UNION 
SELECT uId, uName, tId FROM db_users u INNER JOIN db_tasks t 
ON u.uId=t.tUserId WHERE tYear=2014 
AND (t5=0 OR t6=0) 
+0

내가 아는 그 쉽지 않은 내 질문을 이해하는,하지만 난 당신의 answar를 참조로 , 즉 2 개 개의 다른 결과를 얻을 수있는 두 가지 방법입니다 :

UPDATE 이보십시오. 내가 만든 결합 데이터를 모두 얻으려면 한 가지 방법이 필요합니다. 그래서 사용자가 db_tasks에 있지 않으면 uId = uId 및 uName = uName 및 tId = 0이고 사용자가 db_tasks에 있으면 tId = tId입니다. 그리고 나는 t5> 0 및 t6> 0 인 것을 필요로합니다. 그래서 배열에서 얻을 때 나중에 $ tId가 0 이상이면 무엇인가 할 수 있습니다. $ tId == 0 – DonWagner

+0

@DonWagner가 업데이트를 시도합니다. – CodeBird

+0

최고 좋은 .... 감사. – DonWagner

관련 문제