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 29995 게시물 읽기
No. 29995
join을 해서 목록이 여러개 뜨는데요. 원하는 정보 외에는 한 개씩만 뜨도록 할 수 없을까요?
작성자
안녕하세용
작성일
2011-05-25 17:42ⓒ
2011-05-25 17:42ⓜ
조회수
7,352

상품 목록을 출력하고 있는데요.

 

상품 테이블과 상품 타입테이블이 분리가 돼있습니다.

상품은 여러개의 상품 타입을 가질 수 있고요.

 

상품테이블이랑 상품타입테이블을 join 했더니 당연히 상품목록에 같은 상품이 여러개씩 뜨고있습니다;;ㅠㅠ

 

저는 상품 목록에 상품은 한개씩 뜨고 상품타입만 여러개 띄우고 싶은데

어떻게 해야될지를 모르겠습니다. ㅠㅠ

 

도와주세요~

제 질문이 잘못됐으면 검색어라도 도와주세요~~ ㅠㅠㅋ

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

 

DISTINCT ?

민족님이 2011-05-26 11:46에 작성한 댓글입니다. Edit

A : B = 1 : N 관계에서, N개가 각 row로 표시되는게 아니라, 컬럼에서 집합으로 보여지기를 원하시는 것 같습니다. 맞나요?

박현우(lqez)님이 2011-05-26 13:33에 작성한 댓글입니다.

맞습니다!! 아.. 어렵네요.. 그런데 그 N이 말은 N인데 현재 거의 고정으로 3개로 잡혀있구요. 늘어날 확률은 적은편입니다.. 테이블이 나눠져있어서...

안녕하세용님이 2011-05-27 09:04에 작성한 댓글입니다. Edit

변수 써서 CONCAT 하는 외에는 별다른 수가 없을 것으로 보입니다. 이러한 내용은 결국 SQL 단에서 해결할 것인가, 어플리케이션 단에서 해결할 것인가로 구분됩니다. 개인적으로는 변수 써가며 예쁜(?) 결과 만드는 것은 SQL 쪽에서 굳이 안해도 되지 않나... 정도의 입장입니다.

간략한 예를 작성해드립니다.

 

(1) 여러 ROW 출력

SELECT a.name, b.name FROM item_type a, item b WHERE a.no = b.type;

결과:

+-------+-------------+
| name  | name        |
+-------+-------------+
| bag   | cheap bag   |
| bag   | good bag    |
| shoes | red shoes   |
| shoes | blue shoes  |
| shoes | green shoes |
+-------+-------------+
5 rows in set (0.00 sec)

 

(2) 정리해서 하나의 ROW 출력

SELECT name, MAX(names) FROM

( SELECT

a.no AS no,

a.name AS name,

@names := IF( @prev = a.no, CONCAT( @names, ', ', b.name ), b.name ) AS names,

@prev := a.no

FROM

item_type a, item b

WHERE

a.no = b.type

ORDER BY

a.no) x

GROUP BY no;

결과:

+-------+------------------------------------+
| name  | max(names)                         |
+-------+------------------------------------+
| bag   | cheap bag, good bag                |
| shoes | red shoes, blue shoes, green shoes |
+-------+------------------------------------+
2 rows in set (0.01 sec)

박현우(lqez)님이 2011-05-31 04:41에 작성한 댓글입니다.
이 댓글은 2011-05-31 04:42에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
29998MySQL을 이용해 아주 간단한 게시판을 만들어 보려는데요. [1]
Srin
2011-05-30
8478
29997inno 디비 현재 상태입니다. 보시고 조언 부탁드립니다. [2]
이도치
2011-05-30
9584
29996버디 관계 테이블 설계시 요청 테이블과 관계 테이블을 따로 가는게 좋을까요? [1]
김영범
2011-05-26
7614
29995join을 해서 목록이 여러개 뜨는데요. 원하는 정보 외에는 한 개씩만 뜨도록 할 수 없을까요? [4]
안녕하세용
2011-05-25
7352
29994php에서 mysql 스토어드 프로시져 호출 법. [1]
신희창
2011-05-24
16049
29992innoDB 대용량 이라면? [1]
박상혁
2011-05-19
8366
29991조인에 대해 질문 드립니다.
sql초보
2011-05-19
7981
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다