상태 | 완료 |
---|
안녕하세요.
언제나 수고하십니다.
질문이 있어서 글을 쓰게됐습니다.
xe_document_extra_vars 확장변수 테이블에서 값을 가져오고 싶습니다.
그런데 생각대로 되지않네요..
구조는 아래와 같습니다.
xe_document_extra_keys 테이블
xe_document_extra_vars 테이블
이런 상황인데요.
소재지가 용흥동이고 아파트명이 쌍용아파트인 경우의 아파트 리스트를 가져와 뿌리고 싶습니다만..
SQL을 아무리짜도 제대로 안가져와져서요..;
혹시 방법을 알 수 있을까요?
SELECT *
FROM `xe_document_extra_vars`
WHERE (
eid = 'extra_vars3'
OR eid = 'extra_vars4'
)
AND module_srl =12731
AND value != ""
여기까지하면 소재지, 아파트명 전부 가져오고요.
SELECT *
FROM `xe_document_extra_vars`
WHERE (
eid = 'extra_vars3'
OR value = '포항시 북구 용흥동'
) OR
(
eid = 'extra_vars4'
OR value = '경동하이츠'
)
AND module_srl =12731
AND value != ""
이렇게하면 이상하게 가져오고..
빨간색 OR을 AND로 바꾸면 아예못가져오고...
방법좀 알려주세요;;;
바쁘신데 죄송하네요..
버그는 where 다음에 주소와 건물명 조건을 하나로 묶어야 합니다. or 조건이 추가 되었으니 앞의 조건과 묶어야 합니다.
SELECT *
FROM `xe_document_extra_vars`
WHERE (
(
eid 등등
)
OR (
eid 등등
)
)
AND module_srl =12731
AND value != ""
데이터 추출은 AND, OR 등 조건문을 맞게 넣으면 됩니다.
SELECT *
FROM `xe_document_extra_vars`
WHERE( (
eid = 'extra_vars3'
AND value = '포항시 북구 용흥동'
) OR
(
eid = 'extra_vars4'
AND value = '경동하이츠'
)
) AND module_srl =12731
AND value != ""
이렇게 해도 그전과 같은 결과를 가져와요. 게시글에 적었던것도 에러는 안나오고 결과값을 가져오는건 가져오는데,
소재지가 용흥동에 해당하는 모든 아파트게시물과
여러 동네에 있는 해당하는 경동하이츠 아파트게시물을 다 가져와요.
xe의 확장변수 테이블의 구조가 특이해서 값을 제대로 뽑아내기가 힘든것 같습니다.
소재지가 '포항시 북구 용흥동' , 아파트명이 '경동하이츠' 인 것을 제대로 가져오는 방법이 없을까요?
같은 테이블내에서 필드명을 기준으로 값을 가져오는것이 아니라,
한개의 필드의 값이 A인경우와 B인 경우.. 이런식으로 가져오니 힘드네요.
OR 이니까 조건1과 조건2 중 어느 조건이든 일치하는 것을 다 가져와야 정상이지요. AND 로 해야 조건1과 조건2 두 조건이 다 일치하는 것 만 추출 합니다.
AND로하면 검색결과 없다고 나와서요. select * from xe_document_extra_vars where eid = "1" and eid = "2" 이렇게 하면 검색결과가 없다고 나오는것처럼요. 다른 테이블과 확장변수 테이블의 구조가 달라서 이렇게 검색해오기가 힘든것 같습니다. 보통의 테이블이였다면 이런 고민은 안했을텐데.. 구조 한번만 봐주세요..;
AND value = '포항시 북구 용흥동'
) OR
(
이 부분을
AND value = '포항시 북구 용흥동'
) AND
(
로.
SELECT *
FROM `xe_document_extra_vars`
WHERE (
eid = 'extra_vars3'
AND value = '포항시 북구 용흥동'
) AND
(
eid = 'extra_vars4'
AND value = '경동하이츠'
)
AND module_srl =12731
AND value != ""
네..이렇게 하면 검색결과가 없다고 나와요. 왜냐하면 eid = 'extra_vars3' 이면서 eid = 'extra_vars4' 일수가 없어서 그런것 같아요.
두번 검색을 해서 원하는 값을 추출해야 할 것 같습니다.
처음 조건에 맞는 값의 문서 번호를 구하고 해당 문서번호에서 두번 째 조건에 맞는 값을 구하면 될 것 같습니다.
컬럼이 주소, 명칭이 들어갈 곳이 따로 있으면 되는데 확장변수가 하나의 컬럼에 주소와 명칭을 사용하는 구조로 되어 있군요.
FROM `xe_document_extra_vars`
WHERE document_srl
IN (
SELECT document_srl
FROM `xe_document_extra_vars`
WHERE (
AND value = '포항시 북구 용흥동'
)
AND eid = 'extra_vars4'
AND value = '경동하이츠'
이렇게 해결보았습니다. 어제 하루종일 시간날리면서 백성찬님께서 말씀하신대로 검색해온것에서 다시 재조건 거는걸로 해야겠다고 생각해서
select in, join, union 다 써봤는데..
백성찬님 글을 딱보자마자 위의 방법이 생각이 났네요. 왜 이생각을 못했는지 모르겠습니다. 휴..
감사합니다.^^
카메라 게시판은 마켓에서 사서 잘 사용하고 있습니다. 감사합니다.
앗, 한개 잘못썼네요. 중간쿼리가..
SELECT *
FROM `xe_document_extra_vars`
WHERE (
eid = 'extra_vars3'
AND value = '포항시 북구 용흥동'
) OR
(
eid = 'extra_vars4'
AND value = '경동하이츠'
)
AND module_srl =12731
AND value != ""
이것입니다..죄송합니다.