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개

우선 테이블이 다르게 제공한점 양해부탁드립니다... 금방 끝날줄 알고.. 아무튼 이거는 장바구니 테이블 이거든요
해당 필드는 임시로 추가가 된 상태이고
여기서 $_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)해서
이상이 없는지 확인해 보세요
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 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 있는 결과
위주로 조건 여부에 따른 결과를 확인해보면 좋을것 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인