2016-11-02 4 views
0

SQLで2つのテーブルを参照していますか?

Johnson's Department Storeが発注したが、Gas Rangeの注文ラインは含まれていないため、注文ラインの注文番号と注文日を記載してください。

以下は私がすでに試したことであり、それが私に与えてくれるエラーです。だから、ORDER_NUMとORDER_DATEを選択することになっているのは、それが何を要求しているのかということだからです。 ORDERSからORDER_NUMとORDER_DATEがあるので、私はそれを置いています。なぜなら、それがデータが挿入されているガスレンジを見つけることができる唯一の場所だったからです。 608はジョンソン百貨店の顧客番号で、最後の行は私が把握できないものです。説明にガスレンジが含まれていないとはどういう意味ですか?

SELECT ORDER_NUM, ORDER_DATE 
    -> FROM ORDERS, PART 
    -> WHERE CUSTOMER_NUM='608' 
    -> AND PART.DESCRIPTION NOT IN 'Gas Range'; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Gas Range'' at line 4 

答えて

3

NOT INここで期待どおりに動作しません。 (それは値のセットと一緒に使用しています)

あなたはPART.DESCRIPTION NOT LIKE '%Gas Range%'

+0

これは入力時に実行され、リストされるはずの2つが表示されますが、何らかの理由で複数回リストされています。 – Steberz

+0

@Steberz 2つのテーブルを結合しているためです。したがって、それぞれのレコードはそれぞれのレコードと一致します。一意の行を取得するには、join-conditionが必要です。たぶん 'part.order_id = order.id'(しかし、これには専用のテーブルがあります。注文する部分がn:nのようになります。データベースが分からないと難しいです。) – dognose

1

使用

SELECT ORDER_NUM, ORDER_DATE 
    -> FROM ORDERS, PART 
    -> WHERE orders.id = part.order_id and CUSTOMER_NUM='608' 
    -> AND PART.DESCRIPTION NOT LIKE '%Gas Range%'; 

IN IN演算子を使用すると、WHERE句で複数の値を指定することができます。LIKEの代わりれていませんが必要

SELECT column_name(s) 
FROM table_name 
WHERE column_name IN (value1,value2,...); 

LIKE演算子は、WHERE句で列の指定されたパターンを検索するために使用されます。

SELECT column_name(s) 
FROM table_name 
WHERE column_name LIKE pattern; 

"%"記号は、パターンの前後にワイルドカード(不足している文字)を定義するために使用されます。

0

オペレータ<>を使用できます。 2つのテーブルの間に結合条件がないことにも気付きました。

SELECT ORDER_NUM, ORDER_DATE 
    -> FROM ORDERS, PART 
    -> WHERE CUSTOMER_NUM='608' 
    -> AND PART.DESCRIPTION <> 'Gas Range'; 
+0

他と同じこと答え。それは実行され、私にそれが仮定されているデータの2つの部分を与えるが、何らかの理由でそれらを複数回リストする...任意のアイデアなぜですか? – Steberz

+0

ORDERSとPARTの間で結合を行う必要があります。 ORDERSの外部キーを使用して、PARTの主キーを使用します。 – PlsqlDev

+0

私にそれを見せてもらえますか?あなたは彼らにUNIONと言っていますか? – Steberz

関連する問題