Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481

    [MySQL] select su due tabelle, no JOIN

    ho due tabelle che memorizzano dati di nautura diversi, tabella 1 fatture, tabella 2 transazioni bancarie. Sia la tabella fatture che transazioni bancarie hanno, oltre a vari dati, un campo INT che chiamo ts su cui ho memorizzati il timestamp del giorno in cui è stata fatta l'operazione o in cui è stata emessa la fattura.

    Ora dovrei visualizzare una lista dei valori di tutte e due le tabelle ordinate in base al campo ts. Se faccio una JOIN ogni riga mi rappresenta sia una riga di fatture che una riga di transazioni, quindi non posso, ma in SQL non mi sembra esista un costrutto per fare qualcosa del genere.

    Un esempio forse è chiarificatore:
    F->FATTURE
    1, 1159653600, importo, ecc, ecc
    2, 1159653800, importo, ecc, ecc
    3, 1159654000, importo, ecc, ecc

    T->TRANSAZIONE
    1, 1159653500, ecc, ecc
    2, 1159653900, ecc, ecc
    3, 1159653900, ecc, ecc

    quindi dovrei visualizzare una lista del genere:
    T->1, 1159653500, ecc, ecc
    F->1, 1159653600, importo, ecc, ecc
    F->2, 1159653800, importo, ecc, ecc
    T->2, 1159653900, ecc, ecc
    T->3, 1159653900, ecc, ecc
    F->3, 1159654000, importo, ecc, ecc

    C'è un modo per farlo??

  2. #2
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481

    Re: [MySQL] select su due tabelle, no JOIN

    Avevo pensato di fare 2 select e portare i risultati su due array diversi, quindi creare un terzo andando a prendere i valori, ora dal vettore fatture, ora dal vettore transazioni in base al campo ts...ma come si può fare?!

  3. #3
    In MySQL esiste la funzione UNION tra i risultati di due select A PATTO CHE gli attributi di uscita (quelli selezionati) delle due SELECT siano compatibili all'unione.

    Ovvero se hai:

    codice:
    SELECT id, nome, cognome FROM utenti where id > 50
    
    UNION
    
    SELECT id, nome, cognome, indirizzo FROM utenti WHERE id < 20
    l'operazione non andrà a buon fine in quanto la seconda SELECT ha un campo in più, ma ci saranno problemi anche se le due SELECT, avendo un numero di campi uguale, presentano uno o più campi di TIPO diverso (INT, VARCHAR, etc...)

    Ora io non so esattamente come sono le tue tabelle e quali dati ti interessano nel dettaglio...cmq a livello di DB esiste la UNION

  4. #4
    meglio ancora la union all, perchè la union semplice scarta i record uguali (ovviamente nelle colonne in unione)
    www.cibergt.com

  5. #5
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    le tabelle sono diverse, quindi non posso usare la union o union all...

    mi sa che l'unico modo è fare due select, passare i risultati su dua array, e poi giocare con i due array per crearne un terzo con i dati ordinati come voglio, che ne dite?

  6. #6
    il fatto che le tabelle siano diverse non conta nulla...da quanto ho capito i risultati restituiscono lo stesso tipo di dato per cui in caso ti basta rinominare dei campi e tutto si risolve....
    Altrimenti passi per gli array...

    M
    www.cibergt.com

  7. #7
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    sto provando la strada del bubble sort, funziona sicuro e non impazzisco più di tanto, cmq grazie a tutti dei consigli e della partecipazione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.