Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [mysql o postgres]query unione

    ho 2 tabelle, le semplifico:

    codice:
    tabella contatti:
    nome  | cognome | email_contatto
    ------+---------+---------------
    mario | rossi   | mario@mario.it
    pippo | pippi   | pippo@pipo.it
    codice:
    tabella aziende:
    ragione sociale |email_azienda
    ----------------+---------------
    prova snc       | prova@prova.it
    lala srl        | lala@ciao.it
    io vorrei se possibile una query che mi restituisca le email sia dell'una che dell'altra, con le descrizioni su un campo solo , possibilmente raggruppando cognome e nome sullo stesso campo (ma va bene anche se mette solo il cognome).

    ES:
    codice:
    risultato:
    descrizione  | email
    -------------+---------------
    mario rossi  | mario@mario.it
    pippo pippi  | pippo@pipo.it
    prova snc    | prova@prova.it
    lala srl     | lala@ciao.it
    come si fa? :master:
    grazie


  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    circa

    select concat(cognome,' ',nome) as descrizione,email_contatto as email
    from contatti
    union all
    select ragione_sociale,email_azienda from aziende

  3. #3
    grazie funzika. L'unico problema è il concat che funziona sotto mysql ma sotto postgres non c'e' (bisogna usare l'operatore di concatenazione || ) .
    nessuno sa se c'e' un'operatore di concatenazione comune ad entrambi i linguaggi?


  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591

    spiacente, postgres mi manca .

  5. #5


    mi tocca fare un parser che a seconda del dbms cambi la sintassi dell'sql.
    Vabbè meglio di niente


  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    direi che è sufficente una variabile ed un test.
    If ( $db=="mysql" ) {
    $sql="select concat .....";
    } else
    { $sql="select campo || campo ....";
    }

  7. #7
    magari.
    il problema è che devo farlo su un centinaio di sorgenti, e su ogni sorgente potrebbe esserci + di una query....
    difatti non chiamo la mysql_query, ma la bitsql_query, che a sua volta chiama la funzione giusta a seconda del dbms attualmente in uso.

    per esempio con postgres bisogna usare ilike per fare una ricerca non case sensitive ... quindi mi tocca scrivere la query con degli operatori universali, che vado a replaciare all'occorrenza:

    function bitsql_query($querystring) {
    $querystring = str_replace("LIKE_OPERATOR" , "ILIKE", $querystring);
    return pg_query($querystring);
    }
    a questa funzoine dovrò aggiungere un controllo per il concat...


    se qualcuno conosce un'altra maniera per rendere compatibile un'applicazione con + d un dbms ben vengano consigli.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.