2017-12-14 4 views
0

私は2つのテーブルを持っているので、両方からいくつかのデータを表示して重複を削除しようとしています。申し訳ありませんが、私はSQLとデータベースが初めてです。ここに私のコードSQL - 2つのテーブルからデータを選択して重複を取り除く

表1

CREATE TABLE customer 
(
    customer_id VARCHAR2(5), 
    customer_name VARCHAR2(50) NOT NULL, 
    customer_address VARCHAR2(150) NOT NULL, 
    customer_phone VARCHAR2(11) NOT NULL, 
    PRIMARY KEY (customer_id) 
); 

表Iは、SHOPテーブルからすべて、およびCUSTOMER_ID、顧客テーブルからCUSTOMER_NAMEを表示したい2

CREATE TABLE shop 
(
    shop_id VARCHAR2(7), 
    shop_address VARCHAR2(150) NOT NULL, 
    customer_id VARCHAR2(7), 
    PRIMARY KEY (shop_id), 
    FOREIGN KEY (customer_id) REFERENCES customer (customer_id) 
); 

です。

私はこれまでのところ、これを試してみたが、それは両方のテーブルからすべてを表示していますし、私は2つの重複CUSTOMER_ID列を取得:助けることができる

SELECT * 
FROM shop 
JOIN customer ON shop.customer_id = customer.customer_id 
ORDER BY customer_name; 

は誰もが?

おかげ

答えて

0
select distinct c.customer_id, c.customer_name, s.* 
from customer c 
inner join shop s on c.customer_id = s.customer_id 
0

を使用する必要があります。 *を使用すると、すべての表からすべての列が取り込まれます。 SQLには、「これら以外のすべての列を選択する」という言い方はありません。

私は*を気軽に使用していることを願っています。SELECT *をプログラムコード内で使用することは非常に悪い考えです。特定の列が特定の順序または特定の名前で存在することを期待しています。

タイピングを保存するには、テーブルのいずれかの*を使用して、手動で残りの名前を付けることができます:あなたは店のテーブルと列のみのCUSTOMER_NAME上のすべてを表示することができますのでにより両方のテーブルに

SELECT 
    customer.*, 
    shop.shop_id, 
    shop.shop_address 
FROM 
    ... 
1

は、列CUSTOMER_IDを持っています得意先テーブル

SELECT s.*, c.customer_name 
FROM shop s 
JOIN customer c ON s.customer_id = c.customer_id 
ORDER BY c.customer_name; 
+0

素晴らしい、ありがとう! – zetbo

+0

あなたはようこそ! :D –

関連する問題