2012-07-23 7 views
5

में मौजूद नहीं है, मैं तीन तालिकाओं के संघ के साथ दृश्य बनाना चाहता हूं। लेकिन परिणामस्वरूप क्वेरी में मैं एक अतिरिक्त स्तंभ चाहता हूं जैसे 'tableId'।देखने के लिए अतिरिक्त कॉलम जोड़ना, जो तालिका

तरह
CREATE OR REPLACE VIEW DETAILS 
AS SELECT 
* FROM 
(
SELECT 
    T1.ID, 
    T1.AMOUNT, 
    T1.STATUS, 
    T1.ADDEDBY, 
    T1.ADDEDON 
FROM Table1 T1 
UNION ALL 
SELECT 
    T2.ID, 
    T2.AMOUNT, 
    T2.STATUS, 
    T2.ADDEDBY, 
    T2.ADDEDON 
FROM Table2 T2 
UNION ALL 
SELECT 
    T3.ID, 
    T3.BILLAMOUNT, 
    T3.STATUS, 
    T3.ADDEDBY, 
    T3.ADDEDON 
FROM Table3 T3 
); 

यह मैं आवश्यक तीन तालिकाओं के मिलन देता

मेरे कोड है। लेकिन परिणामस्वरूप आउटपुट में मैं टेबल आईडी कॉलम कैसे प्राप्त कर सकता हूं? यह कॉलम तीनों में से किसी भी तालिका में मौजूद नहीं है।

उत्तर

11

ऐसा लगता है तो आप बस अपने SELECT सूची के लिए एक अतिरिक्त हार्ड-कोडेड मान जोड़ना चाहते हैं की तरह

CREATE OR REPLACE VIEW DETAILS 
AS SELECT 
* FROM 
(
SELECT 
    T1.ID, 
    T1.AMOUNT, 
    T1.STATUS, 
    T1.ADDEDBY, 
    T1.ADDEDON, 
    'T1' tableID 
FROM Table1 T1 
UNION ALL 
SELECT 
    T2.ID, 
    T2.AMOUNT, 
    T2.STATUS, 
    T2.ADDEDBY, 
    T2.ADDEDON, 
    'T2' tableID 
FROM Table2 T2 
UNION ALL 
SELECT 
    T3.ID, 
    T3.BILLAMOUNT, 
    T3.STATUS, 
    T3.ADDEDBY, 
    T3.ADDEDON, 
    'T3' tableID 
FROM Table3 T3 
); 
+0

धन्यवाद यह सहायक था – user1181942

+0

मुझे लगता है कि 'व्यू के चयन में फोरम क्लॉज में एक सबक्वायरी है' क्या यह वाक्यविन्यास ओरेकल के लिए विशिष्ट है? मेरे पास mysql (phpmyadmin के माध्यम से चल रहा है) thx – Awena

+0

@Awena - वाक्यविन्यास एएनएसआई मानक होना चाहिए (हालांकि मानक को इनलाइन दृश्य को एलियाड करने की आवश्यकता हो सकती है)। मुझे कोई जानकारी नहीं है, हालांकि, अगर MySQL इसका समर्थन करता है या क्वेरी को MySQL पर काम करने के लिए किस बदलाव की आवश्यकता होगी। –

0

कॉलम के लिए डेटा कहां से आता है?

अगर वह यह है कि आप के लिए क्या देख रहे आप पूरी तरह से स्थिर डेटा जोड़ सकते हैं:

select 'hello there' from Table1; 

create view v1 as select 123 as table_id, a_column from Table2; 

select 'Table1' as table_id, a_column from Table1 
union all 
select 'Table2', a_column from Table2 
5
CREATE OR REPLACE VIEW DETAILS 
AS SELECT 
* FROM 
(
SELECT 
    T1.ID, 
    T1.AMOUNT, 
    T1.STATUS, 
    T1.ADDEDBY, 
    T1.ADDEDON, 
    'Table1' as tableid 
FROM Table1 T1 
UNION ALL 
SELECT 
    T2.ID, 
    T2.AMOUNT, 
    T2.STATUS, 
    T2.ADDEDBY, 
    T2.ADDEDON, 
    'Table2' as tableid 
FROM Table2 T2 
UNION ALL 
SELECT 
    T3.ID, 
    T3.BILLAMOUNT as AMOUNT, 
    T3.STATUS, 
    T3.ADDEDBY, 
    T3.ADDEDON,  
    'Table3' as tableid 
FROM Table3 T3 
); 
+0

धन्यवाद यह सहायक था – user1181942

-2
create or replace view view1(col1,col2,col3) as select col1,col2,nul 
0

इसके लिए एक बेहतर समाधान है;

NULL AS COLUMN_NAME एक पहचानकर्ता है।

CREATE VIEW MY_VIEW 
    AS 
     (SELECT A.*,NULL AS COLUMN1,NULL AS COLUMN2,NULL AS COLUMN3 
      FROM MY_TABLE A) 
0

मैंने इसके लिए क्या किया।

  1. खुला phpmyadmin।
  2. डेटाबेस का चयन करें। एसक्यूएल मेनू पर
  3. क्लिक
  4. रन निम्न आदेश जैसे-

CREATE VIEW table_name AS SELECT tableA.id, tableA.name, tableA.duty_hours, tableA.rate, NULL AS 'additional_field1',NULL AS 'additional_field2', NULL AS 'additional_field3', tableB.name, tableB.email, tableB.charge, NULL AS 'additional_field4' FROM tableA join tableB using (id) ; 

वह मेरे लिए काम किया।

संबंधित मुद्दे