Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Join o Union

  1. #1

    Join o Union

    Salve, chiedo scusa per la domanda scontata, ma con le Join spesso non ne vado fuori, ho tempi strettissimi, ora il database è praticamente vuoto ma già domani verrà riempito.
    Faccio esempio:
    Tabella1: Nome, Cognome, CodiceFiscale, DataNascita, ecc...
    Tabella2: CodiceFiscale, Acquisti, Costi...
    Tabella3: CodiceFiscale, Preferenza1, Preferenza2...
    Tabella4: CodiceFiscale, Gioco1, Gioco2...
    Tabella5: CodiceFiscale, Voto.

    Il nome dei campi sono inventati, ma io voglio un record ad esempio col Nome, sapendo Costi di chi ha voto superiore a 5.
    Vi sto chiedendo la corretta sintassi per avere una voce per campo come se facessi queste 5 SELECT:

    Codice PHP:
    SELECT FROM Tabella1 WHERE CodiceFiscale '$variabile'
    SELEFT Costi FROM Tabella2 WHERE CodiceFiscale '$variabile'
    SELECT FROM Tabella3 WHERE CodiceFiscale '$variabile'
    SELECT FROM Tabella4 WHERE CodiceFiscale '$variabile'
    SELECT FROM Tabella5 WHERE CodiceFiscale '$variabile' AND Voto 
    Inserisco UNION tra tutti i vari SELECT, faccio una JOIN?

    Grazie, siete sempre molto gentili e mi aiutate moltissimo.

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    SELECT * FROM Tabella1, Tabella2.Costi WHERE Tabella1.CodiceFiscale = '$variabile' and Tabella1.CodiceFiscale = Tabella2.CodiceFiscale and Tabella1.CodiceFiscale = Tabella5.CodiceFiscale and Tabella5.Voto > 5


    Aggiungi tu i campi che ti servono dalle altre tabelle e le join occorrenti

    Ovviamente se hai piu' occorrenze dello stesso CodiceFiscale nelle diverse tabelle otterrai una moltitudine di risultati, ovvero un record per ogni occorrenza moltiplicato per le altre occorrenze.
    Ultima modifica di br1; 11-09-2018 a 22:14
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    UNION serve per aggregare dati provenienti da più tabelle. Nel tuo caso ti servono le JOIN.
    Dici che hai tempi strettisimi ma per fare una query che non mi sembra sia complicata non ci vuole un’intera giornata.
    Un consiglio. Prova a fare la query partendo con due tabelle. Quando funziona aggiungi un’altra, etc...
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Quote Originariamente inviata da br1 Visualizza il messaggio
    SELECT * FROM Tabella1, Tabella2.Costi WHERE Tabella1.CodiceFiscale = '$variabile' and Tabella1.CodiceFiscale = Tabella2.CodiceFiscale and Tabella1.CodiceFiscale = Tabella5.CodiceFiscale and Tabella5.Voto > 5


    Aggiungi tu i campi che ti servono dalle altre tabelle e le join occorrenti
    Grazie, perciò nessuna JOIN o UNION, basta che dico le varie tabelle e specifico tabella.campo.

    Grazie

    Le JOIN non le ho proprio capite...

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Veramente quella E' una join
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Quote Originariamente inviata da badaze Visualizza il messaggio
    UNION serve per aggregare dati provenienti da più tabelle. Nel tuo caso ti servono le JOIN.
    Dici che hai tempi strettisimi ma per fare una query che non mi sembra sia complicata non ci vuole un’intera giornata.
    Un consiglio. Prova a fare la query partendo con due tabelle. Quando funziona aggiungi un’altra, etc...
    Tempi stretti, non è scrivere, è far funzionare tutto...
    Non ho il PC davanti per provare, ma domani dovrà essere ready.
    Per questo ho chiesto aiuto.

  7. #7
    Quote Originariamente inviata da br1 Visualizza il messaggio
    Veramente quella E' una join
    Non leggo scritto JOIN, ma mi fido, comunque la sintassi per ciò che devo fare l'ho capita perfettamente!
    Grazie infinite!

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Quote Originariamente inviata da FioreFix Visualizza il messaggio
    Non leggo scritto JOIN, ma mi fido, comunque la sintassi per ciò che devo fare l'ho capita perfettamente!
    Grazie infinite!
    Salvo che nell’esempio dato da br1 non ci sono le 5 tabelle nella clausola from. Di conseguenza i legami tra tutte le tabelle sono da scrivere. Di più con tutte e 5 tabella una query con le JOIN è più facile da scrivere e da leggere. IMHO.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Praticamente:
    Codice PHP:
    SELECT FROM Tabella1Tabella2Tabella3Tabella4Tabella5 WHERE Tabella1.CodiceFiscale '$variabile' AND Tabella2.CodiceFiscale '$variabile' AND Tabella3.CodiceFiscale '$variabile' AND Tabella4.CodiceFiscale '$variabile' AND Tabella5.CodiceFiscale '$variabile' AND Tabella5.Voto 5

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Assolutamente no.
    Le tabelle devono essere legate tra di loro con i campi comuni.

    Ti faccio un esempio.

    codice:
    select t.numeroOrdine, t.codiceDestinatario, d.nomeDestinatario, r.codiceArticolo, a.nomeArticolo, r.quantitaOrdinata
    from testataOrdini t
    inner join destinatario d on t.codiceDestinatario = d.codiceDestinatario
    inner join righeOrdini r on t.numeroOrdine = r.numeroOrdine
    inner join articoli a on r.codiceArticolo = a.codiceArticolo
    where t.codiceDestinatario = $variabile
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.