sql 쿼리 질문이요 채택완료
안녕하세요. 로직을 수정하고 있는데요
필드가 2개가 있어요 두개는 임시로 추가한 필드에요 it_option1, it_option2로 했는데
아래 테이블처럼 있다고 가정하에 설명드려요
| it_option1 | it_option2 |
| 1. -0.5 ;999 | 공백 |
| 공백 | 2. -0.75 ;999 |
이렇게 번갈아서 있다고 치면 만약에 it_option1에 값이 없으면 it_option2 로 찾아야하는데
이게 좀 잘 안되네요.. 쿼리를 어떻게 짜야될까요? where 절에서 도무지 어떻게 할지 모르겠어요
이게 post 변수로 받아와서 두개 필드를 조회를 하고싶어요
답변 4개
(it_option1 = '{$val}' OR it_option2 = '{$val}')
댓글을 작성하려면 로그인이 필요합니다.

우선 테이블이 다르게 제공한점 양해부탁드립니다... 금방 끝날줄 알고.. 아무튼 이거는 장바구니 테이블 이거든요
해당 필드는 임시로 추가가 된 상태이고
여기서 $_post 변수로 it_opt7 와 it_opt8 일부 필드를 검색해서
and it_opt7 like '{$_POST['it_opt7']}%' or it_opt8 like '{$_POST['it_opt8']}%'
했다가.. 이것도 아닌것 같아서...
and (it_opt7 = '{$_POST['it_opt7']}' or it_opt8 = '{$_POST['it_opt8']}')
로 했는데도 위에 그림에 있는 값이 조회 결과가 안나와서요..
위에 사진 보면 이미 두개 필드에 값이 있는데 이거를 두 $_post 값으로 검색을 했는데 결과가 없다고만 나옵니다...
답변에 대한 댓글 4개
따라서, it_option1 필드와 it_option2 필드 중 하나라도 값이 있으면 조회하고 싶다면 다음과 같이 쿼리를 작성할 수 있죠.
SELECT * FROM 테이블명 WHERE it_option1 != '' OR it_option2 != '';
it_option1 필드가 공백이 아니거나(!= '') it_option2 필드가 공백이 아닌 경우(!= '') 해당 레코드를 조회합니다.
예를 들어, 아래 테이블이 있다고 가정하면...........
+------------+------------+
| it_option1 | it_option2 |
+------------+------------+
| -0.5 ;999 | -0.75 ;999 |
+------------+------------+
it_option1 필드에 값이 없는 경우(NULL 또는 공백), it_option2 필드에서 값을 조회하고 싶다면 다음과 같은 쿼리.
SELECT * FROM 테이블명 WHERE it_option1 = '' OR it_option1 IS NULL OR it_option2 != '';
위에 쿼리는 it_option1 필드가 공백('') 또는 NULL인 경우(IS NULL) 또는 it_option2 필드가 공백이 아닌 경우(!= '') 해당 레코드를 이런 식으로 조회 됩니다.
and it_opt7 like '{$_POST['it_opt7']}%' or it_opt8 like '{$_POST['it_opt8']}%'
했다가..
==
이 query 문을 출력( echo)해서
이상이 없는지 확인해 보세요
댓글을 작성하려면 로그인이 필요합니다.
it_option1 = '{$abc}' OR it_option2 = '{$abc}'
댓글을 작성하려면 로그인이 필요합니다.
it_option1 = '${post_var}' OR it_option2 = '${post_var}'
답변에 대한 댓글 5개
저도 or 절로 해서 구분해서 했다가 제대로 조회를 하는데 원하는 결과가 안나와서요
다른 추가 영향을 받는 부분이 없는지 확인이 필요한것 같습니다.
[code]
SELECT *
FROM (
SELECT '1. -0.5 ;999' it_option1, '' it_option2 FROM DUAL UNION ALL
SELECT '1. -0.5 ;222' it_option1, '' it_option2 FROM DUAL UNION ALL
SELECT NULL it_option1, '2. -0.75 ;999' it_option2 FROM DUAL
) vtbl
WHERE it_option1 LIKE '%999%' OR it_option2 LIKE '%999%'
;
/*
+--------------+---------------+
| it_option1 | it_option2 |
+--------------+---------------+
| 1. -0.5 ;999 | |
| NULL | 2. -0.75 ;999 |
+--------------+---------------+
2 rows in set (0.00 sec)
*/
SELECT *
FROM (
SELECT '1. -0.5 ;999' it_option1, '' it_option2 FROM DUAL UNION ALL
SELECT '1. -0.5 ;222' it_option1, '' it_option2 FROM DUAL UNION ALL
SELECT NULL it_option1, '2. -0.75 ;999' it_option2 FROM DUAL
) vtbl
WHERE it_option1 LIKE '%999%' -- OR it_option2 LIKE '%999%'
;
/*
+--------------+------------+
| it_option1 | it_option2 |
+--------------+------------+
| 1. -0.5 ;999 | |
+--------------+------------+
1 row in set (0.00 sec)
*/
[/code]
그렇지 않고서는 테이블을 CREATE 하고 데이터를 INSERT 한후 SELECT 를 해야 합니다.
- WHERE 절 없는 결과
- OR 없는 결과
- OR 있는 결과
위주로 조건 여부에 따른 결과를 확인해보면 좋을것 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인