2017-02-01 4 views
0

이 mysql 쿼리에 문제가 있습니다. 고객 ID로 연결된 고객 테이블과 주문 테이블이 있습니다. orders 테이블에는 날짜 필드가 있으며 2016 년 7 월 특정 주문에 대한 주문이없는 고객의 이름을 나열하려고합니다. NOT IN이 도움이 될 수 있다고 들었지만 그 방법을 알지 못합니다. 비슷한 예제를 찾았지만 IS NULL을 사용합니다. 나는이 시도하지만,이 위치에서 NOT (유효한 입력 좋아하지 않았어요 : 다음이 시도MYSQL 테이블 결합 및 특정 날짜에 주문하지 않고 고객 선택

SELECT customer.cust_name FROM customer LEFT JOIN ordertbl ON ordertbl.cust_id = customer.cust_id WHERE order_date like '2016-07%' not in ordertbl.order_date;

을하지만 아무 결과도 반환되지 : 나는 또한 발견

SELECT customer.cust_name FROM customer LEFT JOIN ordertbl ON ordertbl.cust_id = customer.cust_id WHERE (SELECT COUNT(order_date like '2016-07%')) IS NULL;

을 유사한 예이지만 얻을 수는 없지만 결과가 없습니다.

Select customer.cust_name From customer where ordertbl.cust_id Not in ( Select customer.cust_id From ordertbl Where ordertbl.order_date like '2016-07%');

나는이 모든 잘못에 대해 확신하고있다. 몇 가지 다른 예제를 시도했지만 그 중 하나는 작동하지 않았습니다. 어떤 도움을 주셔서 감사합니다.

+0

truggling? http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query를 참조하십시오. – Strawberry

답변

0

이가 주문 테이블에서 고객 ID 참조가 CUSTOMER_ID라고 가정하면, 쿼리는 다음과 같습니다

SELECT CUSTOMER.CUST_NAME 
    FROM CUSTOMER 
    WHERE CUST_ID IN 
     (SELECT ORDERTBL.CUSTOMER_ID 
     FROM ORDERTBL 
     WHERE DATE <> yourdate) 
여전히
+0

고마워, 그 의도 한대로 일한 것하지만 날짜에 대한 질문이 있습니다. 나는 특정 날짜를 원하지 않지만 한 달에'your> 대신'LIKE '2016-07'을 사용했습니다. 그것은 효과가있는 것으로 보이지만'<>'를 사용했다는 사실에 근거하여 대신''NOT LIKE' '를 사용해야 할 것으로 예상됩니다. 왜 그렇지 않은지 설명해 주시겠습니까? – user2328273

+0

LIKE 연산자를 사용하려면 날짜를 텍스트로 변환해야합니다. 그러나 더 쉬운 instaed, 쓰기 : WHERE DATE> = '2017-01-01'AND DATE <= '2017-01-02'범위. – Ollaw