테이블 조인할때 두 행을 고정시키는 방법 좀..

ezmirk의 이미지

매일 매일 작업 수행결과에 대한 로그가 쌓입니다.
로그는 매일 매일 쌓이는데 실패할 경우 아예 로그가 기록이 안됩니다.

수금테이블
no 날짜 이름,성공
0, 2010년 3월 1일, 갑, O
1, 2010년 3월 1일, 을, O
2, 2010년 3월 1일, 병, O
3, 2010년 3월 1일, 정, O
4, 2010년 3월 2일, 갑, O
5, 2010년 3월 2일, 을, O
6, 2010년 3월 2일, 병, O
7, 2010년 3월 2일, 정, O
8, 2010년 3월 3일, 갑, O
9, 2010년 3월 3일, 을, O

위 로그를 보시면 3월 3일은 병과 정이 로그를 남기지 않았습니다.
실패를 하게 되면 로그가 아예 안 남아서 NULL로 됩니다.
위 처럼 테이블에 로그가 기록이 될 경우 아래와 같은 출력을 얻고자 합니다.

저는 채무자 테이블을 만들어서 조인을 하려고 했는데, 초보라서 잘 모르겠네요

채무자테이블
no 이름
0, 갑
1, 을
2, 병
3, 정

채무자 테이블과 수금테이블의 이름으로 라이트조인을 하면
아래와 같이 나옵니다.
이름, 날짜 성공
갑, 2010년 3월1일 O
갑, 2010년 3월2일 O
....
....
...
병, NULL NULL
정, NULL NULL

이렇게 되면 정이라는 놈이 수금이 안되었다는 것을 알고 독촉을 할 수 있으니 완성이라고 생각했는데, 이렇게 되면 날짜까지도 NULL로 바뀌기 때문에 where로 날짜 필터링을 했을때 검색이 되지 않습니다. 제가 원하는 결과는
where로 날짜를 지정했을때

이름 날짜 성공
갑, 2010년 3월 3일 O
을, 2010년 3월 3일 O
병, 2010년 3월 3일 NULL
정, 2010년 3월 3일 NULL

이렇게 나와야 합니다.
이름과, 날짜 두 행이 고정되어 나오고 성공과 실패가 O와 NULL로 구분되어야 하는데

디비설계를 처음부터 다시 해야 하나 싶기도 하고 조인 방법이 잘못되었나 싶고.. 아무것도 모르는데 할려고 하니 어렵네요
누군가가 좀 도와주시면 감사하겠습니다.

swish95의 이미지

다음처럼 요약 가능할것 같습니다.

1. 3/3일에 갑,을,병,정 이 전부다 로그가 없을때 어떻게 처리할것인가?
- 별도의 달력테이블이 존재하지 않는다고 하면 당연 3/3에 대해서는 한행도 출력되지 않습니다.

2. 달력테이블이 없으면 만들면 됩니다.
1) 먼저 로그 테이블에서 기간동안 날짜만 Grouping 해서 테이블을 만듭니다.
2) 1)에서 만든 테이블과 채무 테이블을 Inner Join - 1), 2) 과정이 이미 Cross Join - 해서 테이블을 만듭니다.
3) 0, Null 은 Sub Query 를 이용하여 2)에서 만들어진 테이블을 이용하여 결과를 질의해 옵니다.

select 채무.이름
        , 달력.날짜
        , (select 수금.성공 from 수금 where 수금.날짜 = 달력.날짜 and 수금.이름 = 채무.이름) as 성공
from 채무
 inner join (select 날짜 from 수금 where 날짜 between 시작 and 종료 group by 날짜) as 달력

이런식이겠죠
------------------------------------------------------------
ProgrammingHolic

------------------------------------------------------------
ProgrammingHolic

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.