2017-12-15 3 views
0

두 테이블을 결합하여 첫 번째 테이블에서 중복되지 않도록 출력하려고합니다. 첫 번째 테이블에는 두 테이블을 조인 할 ID에 중복이 없지만 두 번째 테이블에는 여러 인스턴스가있을 수 있습니다. 내가 첫 번째 테이블에서 ID에 "GROUP BY"을 시도했지만 물론 그오른쪽 테이블에 중복을 유지하면서 왼쪽 테이블에서 중복을 제거하십시오. SELECT JOIN

내가 SELECT 중첩의 일종을 사용하거나 수행하려고해야 .. 두 번째 테이블에서 중복을 제거

무엇을 당신에게 것 제안 해?

나는 갇혀있어 내가 얻을 수있는 모든 도움에 감사 할 것 같습니다. 여기

내 쿼리입니다 :

$time_query = "SELECT time.id, time.time_in, time.time_out, time.comment, time.user_id, time_break.break_in AS break_in, time_break.break_out AS break_out, time_break.time_id AS time_id 
      FROM `time` 
      LEFT JOIN time_break 
      ON time.id = time_break.time_id 
      WHERE time.time_out != '' AND time.user_id= $uid 
      ORDER BY time.id ASC 
+1

이것은 SQL이하는 것이 아닙니다. 일부 반복 된 값을 억제하여 "출력을 형식화"해야합니다. $ time_query 결과를 허용하는 제품에서이 작업을 수행해야합니다. 결과를 제공하는 SQL에 없습니다. 그런데, 요청 된 순서를 제공하기 위해 시간 테이블 열의 값을 반복해야합니다. –

+0

'time'이라는 단어는 SQL 자체에서 사용되므로 테이블 별칭을 사용하여 혼란을 피할 것을 제안합니다. –

+0

나는 Aknosis와 함께있다 - 당신이 null time.id를 가진 많은 레코드를 원하는 이유를 이해하지 못한다. 표시 목적을 위해/cobol 스타일 헤더를 트랜잭션 레코드에 쓰지 않는다.이 경우 SQL 질문이 아닌 ETL 질문이다 –

답변

0

내가 SQL을 사용하여 결과를 "부 자연스러운"조작 것 같아 무엇에 반대,하지만 그래서 당신이 여기에 얼마나 어색 볼 수 있다는 것을 억제에 대한 접근 방식 (또는 "숨기기") 값을 보지 않으려 고합니다. 이러한 쿼리의 결과를 사용하는 경우 NB

SELECT 
     @row_num :=IF(@prev_value = t.id , @row_num + 1, 1) AS RowNumber 
    , t.id 
    , IF(@row_num = 1,t.id, '')  AS t_id 
    , IF(@row_num = 1,t.time_in, '') AS time_in 
    , IF(@row_num = 1,t.time_out, '') AS time_out 
    , IF(@row_num = 1,t.comment, '') AS comment 
    , IF(@row_num = 1,t.user_id, '') AS user_id 
    , tb.break_in      AS break_in 
    , tb.break_out     AS break_out 
    , tb.time_id      AS time_id 
    , @prev_value := t.id 
FROM `time` AS t 
LEFT JOIN time_break AS tb ON t.id = tb.time_id 
CROSS JOIN (SELECT @row_num :=1, @prev_value :='') vars 
WHERE t.time_out <> '' 
AND t.user_id = @UID 
ORDER BY 
     t.id ASC 
    , t.time_in ASC 
    , tb.break_in ASC 

: 내보기에서

이는 "프레젠테이션 계층"에서 수행해야하지만, MySQL은 당신이 이전 행의 값을 고려하는 변수를 사용할 수있다 이 아니며 일부 값이 억제되거나 숨겨진 열에 의해이 아닌 순서로 정렬되어야합니다.

+0

OK , 나는 이것이 갈 길이 아니라는 것을 이해한다. 고마워요. @Used_By_ 이미 나를 똑바로 세워 뒀습니다. 당신이 제안했듯이 출력을 형식화하여보다 나은 접근법을 찾으려고 노력할 것입니다. – user2533103

관련 문제