2017-02-01 11 views
0

このmysqlクエリに問題があります。私は顧客IDとリンクされた顧客テーブルと注文テーブルを持っています。注文テーブルには日付フィールドがあり、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

ありがとう、それは意図したように働いたようですが、私は日付についての質問があります。私は特定の日付を望んでいませんが、月には '<> yourdateの代わりに' LIKE '2016-07'を使っていました。それはうまくいったようですが、あなたが '<>'を使ったという事実に基づいて、代わりに 'NOT LIKE'を使う必要があると思います。なぜそうでないのか説明できますか? – user2328273

+0

LIKE演算子を使用するには、日付をテキストに変換する必要があります。しかし、それは簡単にinstaed書いています: どこの日付> = '2017-01-01'と日付<= '2017-01-02'の範囲です。 – Ollaw

関連する問題