2013-07-19 35 views
0

我有2個表,我需要加入這個2個表,但我沒有這兩個表中公共列。表結構如下非等值連接的兩個表

CREATE TABLE customer(
     cust_id NUMBER 
               CONSTRAINT cus_id_pk PRIMARY KEY, 
     cust_name VARCHAR2(20) NOT NULL, 
     address VARCHAR2(40), 
     contact_no NUMBER NOT NULL, 
     email_id VARCHAR2(30)); 

CREATE TABLE supplier(
     supp_id NUMBER 
               CONSTRAINT supp_id_pk PRIMARY KEY, 
     supp_name VARCHAR2(20) NOT NULL, 
     address VARCHAR2(40), 
     contact_no NUMBER NOT NULL, 
     email_id VARCHAR2(30)); 

問題: 創建一個SQL查詢來列出所有以contact_no開頭和結尾爲9的客戶和供應商。

回答

2

正常UNION應該這樣做;

SELECT 'customer' type, cust_id id, cust_name name, address, contact_no, email_id 
FROM customer WHERE contact_no LIKE '9%9' 
UNION 
SELECT 'supplier' type, supp_id id, supp_name name, address, contact_no, email_id 
FROM supplier WHERE contact_no LIKE '9%9' 

編輯:如果你真的想JOIN與弱的標準,你可以很容易做到這一點;

SELECT c.cust_id, c.cust_name, c.address cust_addr, 
    c.contact_no cust_contact_no, c.email_id cust_email_id, 
    s.supp_id, s.supp_name, s.address supp_addr, 
    s.contact_no supp_contact_no, s.email_id supp_email_id 
FROM customer c 
JOIN supplier s 
    ON c.contact_no LIKE '9%9' 
AND s.contact_no LIKE '9%9'; 

An SQLfiddle showing both

+0

我需要同時顯示客戶詳細信息和供應商的詳細信息。 – user01

+0

@Ayeswarya看到更新,如果我誤解了,你可能不得不用一個例子來澄清這個問題。 –

-1

你可以做這樣的事情: -

(SELECT * 
    FROM customer 
    WHERE contact_no LIKE '9%9') 

    UNION ALL 

    (SELECT * 
    FROM supplier 
    WHERE contact_no LIKE '9%9') 
+0

爲什麼downvoted ?? –

+0

是的,獲得所有專欄的速度更快,更容易。但它也很危險而且很懶惰。 – Zec