2017-12-14 4 views
0

그래서 두 테이블이 있고 두 가지에서 일부 데이터를 표시하고 중복 제거하려고합니다. 죄송합니다. SQL과 데이터베이스가 처음입니다. 여기에 내 코드SQL - 두 테이블에서 데이터 선택 및 중복 제거

표 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) 
); 

표는 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) 
); 

입니다.

나는 지금까지 시도했습니다,하지만 두 테이블에서 모든 것을 표시하는 것 그리고 난이 중복 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

당신을 환영합니다! :디 –