database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 28026 게시물 읽기
No. 28026
mysql 쿼리 질문입니다.. 도와주세요.. ㅠㅠ
작성자
쿼리초보
작성일
2009-02-16 10:24
조회수
5,088

USER 테이블

==========

ID, TIELE

==========

1, 학생

2, 선생님

3, 교직원



COMMENT 테이블

=================

comment, ID, date

=================

AAAAA, 1, 20090214000000

BBBBB, 1, 20090215000000

CCCC,  2, 20090215000000

DDDDD, 2, 20090216000000



이렇게 테이블이 있을때 USER테이블의 모든 값과, USER 테이블의 ID와 COMMENT 테이블에 COMMENT가 있을경우

USER 테이블의 ID와 COMMENT 테이블의 ID값이 같은 COMMENT테이블의 comment 값중에서 date가 가장 최신인 comment만을 가져오게 하고 싶습니다.. 



즉 원하는 결과값은.... 


1, 학생, BBBBB, 

2, 선생님, DDDDD

3, 교직원, NULL    


이런식으로 나타내게 하고 싶은데요.. 

쿼리문을 어떻게 작성해야 하는지를 잘 모르겠습니다.... 



도와주세요.. ㅠㅠ

이 글에 대한 댓글이 총 6건 있습니다.

좋은 쿼리는 테이블의 구조와 인덱스 정보를 모르기에 말씀드릴 순 없지만, 대충 적으면 다음과 같습니다.

SELECT u.id, u.title, c.comment FROM user as u, comment as c WHERE c.id = u.id ORDER BY c.date DESC limit 3

박현우(lqez)님이 2009-02-16 14:39에 작성한 댓글입니다.


답변 감사합니다.. 
근데  저렇게 하면... 

USERS테이블에는 있는데 
comment 테이블에는 없는 USER테이블의 사용자는 나타내지지 않게 되지 않나요?? 


제가 원하는건

1, 학생, BBBBB, 
2, 선생님, DDDDD
3, 교직원, NULL      이것인데.. 



박현우 님의 방법대로 하면 

1, 학생, BBBBB, 
2, 선생님, DDDDD   요렇게 밖에 안나오겠네요.... 


^^;; 쿼리문 너무 어렵습니다... ㅠㅠ
쿼리초보님이 2009-02-16 14:56에 작성한 댓글입니다. Edit

제가 질문을 잘못 이해 했었네요.

또 허접한 서브 쿼리밖엔 생각이 안나는데, 다음과 같습니다.

SELECT u.id, u.title, ( SELECT msg FROM `comment` WHERE u.id=id ORDER BY at DESC LIMIT 1) AS recent_msg FROM `user` AS u

쿼리 결과는 다음과 같습니다.
 


mysql> SELECT u.id, u.title, ( SELECT msg FROM `comment` WHERE u.id=id ORDER BY at DESC LIMIT 1) AS recent_msg FROM `user` AS u;
+----+--------+------------+
| id | title  | recent_msg |
+----+--------+------------+
|  1 | 학생      | bbbb       |
|  2 | 선생님       | dddd       |
|  3 | 교직원       | NULL       |
+----+--------+------------+
3 rows in set (0.00 sec)




테이블 형태와 내용은 다음과 같습니다.

mysql> desc user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| title | varchar(255) | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> select * from user;
+----+--------+
| id | title  |
+----+--------+
|  1 | 학생      |
|  2 | 선생님       |
|  3 | 교직원       |
+----+--------+
3 rows in set (0.02 sec)

mysql> desc comment;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| msg   | varchar(255) | NO   |     | NULL    |       |
| id    | int(11)      | NO   | MUL | NULL    |       |
| at    | datetime     | NO   |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> select * from comment;
+------+----+---------------------+
| msg  | id | at                  |
+------+----+---------------------+
| aaaa |  1 | 2009-02-15 00:00:00 |
| bbbb |  1 | 2009-02-16 00:00:00 |
| cccc |  2 | 2009-02-14 00:00:00 |
| dddd |  2 | 2009-02-16 00:00:00 |
+------+----+---------------------+
4 rows in set (0.00 sec)

mysql>



박현우(lqez)님이 2009-02-16 18:13에 작성한 댓글입니다.
이 댓글은 2009-02-16 18:13에 마지막으로 수정되었습니다.

아~~ 박현우님 정말 감사드립니다.. 

제가 생각한건 outer 조인이었는데 이것만으론 안되더라구요.. 


저도 쿼리를 잘 하고 싶은데 

혹시 도움되는 책이나 사이트 생각나시는거 있으시면 좀 알려주시길 부탁드립니다. 

그리고 정말 감사드립니다... ^^
쿼리초보님이 2009-02-17 12:12에 작성한 댓글입니다. Edit

서적은 딱히 본게 없고, http://dev.mysql.com/doc 랑, 바로 이곳 데이터베이스 사랑넷의 Q&A에서 정보를 주로 얻습니다. 그리고 잘 짜여진 다른 쿼리/프로그램들을 통해 배우게 되는데, 아직도 갈 길이 머네요. 도움이 되어서 다행입니다.

박현우(lqez)님이 2009-02-17 18:39에 작성한 댓글입니다.

SELECT user.id, user.title, comment.msg

FROM user

INNER JOIN

(

SELECT id, MAX( at ) AS max_at

FROM comment

GROUP BY id

) AS cmt ON user.id = cmt.id

INNER JOIN comment ON cmt.id = commennt.id AND cmt.max_at = comment.at

;

 

가 조금 더 효율이 좋지 않을까 싶은데요.

우욱님이 2009-02-18 05:52에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
28030mysql 입니다 테이블a 테이블b 부모 자식 관계일때 어떻게 코딩하시나요? [4]
손님
2009-02-17
5205
28029쿼리문 질문드립니다. 부탁드려요~~
웅사마
2009-02-16
5032
28028테이블 생성시 합계 컬럼에 대한 질문 [4]
최덕현
2009-02-16
4752
28026mysql 쿼리 질문입니다.. 도와주세요.. ㅠㅠ [6]
쿼리초보
2009-02-16
5088
28024저기 frm 파일이 없어졌는데요.. [1]
이현광
2009-02-15
4585
28023고수님들 한번만 봐주세요 ㅜㅜ백업과 복구 과정에서 글자가 안깨지게하려면
이성훈
2009-02-14
4844
28022한 테이블에서 다른 테이블로 데이터 옮기기 [1]
제로당
2009-02-13
5332
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다