Aggiunta colonna di vista, che non è presente nella tabella

Voglio creare la visualizzazione con l’unione di tre tavoli. Ma nel risultato della query voglio una colonna extra come ‘tableId’.

Il mio codice è come

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

Questo mi dà unione di tre tabelle.
Ma come posso ottenere Id della tabella, colonna portato di uscita? Questa colonna non è presente in nessuna delle tre tabelle.

OriginaleL’autore user1181942 | 2012-07-23

6 Replies
  1. 12

    Suona come si desidera solo per aggiungere un altro hard-coded valore per il vostro SELECT elenco

    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
    );
    Grazie questo è stato utile
    Io sto ‘Vista SELECT contiene una subquery nella clausola FROM e’ una sintassi specifica per Oracle? Ho mysql (in esecuzione tramite phpmyadmin) thx
    La sintassi dovrebbe essere standard ANSI (se la norma potrebbe richiedere la vista in linea alias). Non ho idea, tuttavia, se MySQL supporta o che sarebbero necessarie per rendere il lavoro di query su MySQL.
    Ho capito di lavoro attraverso la rimozione dei ” SELECT * FROM ()’ e compreso CREATE or REPLACE VIEW DETAILS …quindi qui i miei tre Seleziona/Sindacati.. forse questo può aiutare qualcuno usando phpmyadmin.. Grazie Justin per il frammento!

    OriginaleL’autore Justin Cave

  2. 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
    );

    OriginaleL’autore juergen d

  3. 0

    Dove i dati per la colonna?

    È possibile aggiungere completamente i dati statici se è quello che stai cercando:

    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

    OriginaleL’autore Thilo

  4. 0

    C’è una soluzione migliore per questo;

    NULL COME COLUMN_NAME è un identificatore.

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

    OriginaleL’autore hurricane

  5. 0

    Quello che ho fatto per la stessa.

    1. aprire phpmyadmin.
    2. selezionare database.
    3. fare clic su sql menu
    4. eseguire il seguente comando come-

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

    Che ha funzionato per me.

    OriginaleL’autore S.Yadav

Lascia un commento