Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    19

    selezione dati da più tabelle mysql

    Ciao a tutti. In un sito internet che sto realizzando ho due tabelle, canzoni e artisti. Nella pagina voglio far apparire tutte le canzoni, quindi "SELECT * FROM canzoni" e fin qui ok. Considerando che ogni canzone potrebbe avere più artisti, prevedo di inserirne un massimo di 3.


    Le due tabelle hanno quindi diversi campi, tra cui quelli chiamati in causa sono i seguenti.


    ___CANZONI:
    id_canzone (INT PRIMARY AUTO INCREMENT)
    id_artista_uno (INT)
    id_artista_due (INT)
    id_artista_tre (INT)


    ___ARTISTI
    id_artista (INT PRIMARY AUTO INCREMENT)
    nome_artista (VARCHAR)


    Supponiamo che l'artista Michael Bublé abbia, nella tabella ARTISTI, id_artista numero '5'.
    Tramite pannello admin creato precedentemente, inserisco una canzone con titoli, album, ecc e quando scelgo l'artista, dal menù a tendina (SELECT * ALL FROM artisti) scelgo Michael Bublé. In CANZONI, nel campo id_artista_uno mi va a riversare il '5'. Se la canzone ha altri artisti, faccio la stessa cosa e riverso un numero per i vari id_artista_due e id_artista_tre.


    Nel frontend, quando faccio partire un ciclo while con "SELECT * FROM canzoni", quindi, vorrei che PHP intercettasse l'id_artista_uno di CANZONI, che in questo caso è 5, e andasse in ARTISTI a selezionare l'id_artista 5 con nome_artista Michael Bublé, in modo che io possa fare echo $array[nome_artista] e vedere il nome di Michael Bublé, non il suo numero (id_artista).


    Ulteriore problematica è che questo dovrebbe farlo anche per id_artista_due e id_artista_tre durante il ciclo while.
    Alla fine di tutto questo marasma il risultato è semplice.

    Artistauno feat. Artistadue and Artistatre.

    Qualcuno mi ha suggerito di utilizzare LEFT JOIN nella selezione. Purtroppo io non conosco l'argomento e anche se sto provando a studiarlo faccio un po' fatica a capirne la teoria. Vorrei passare alla pratica con voi, così da facilitare la comprensione.

    Spero di aver esposto il mio problema nel modo più esauriente possibile.. grazie in anticipo.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Le query sono argomento Database, non PHP, ti sposto.

    In PHP, una volta trovata la query giusta da eseguire, basta che la esegui dentro un ciclo passandole i dati giusti ad ogni giro.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    19
    Il problema è che io non riesco a intercettare il campo "nome_artista" della tabella "artisti" all'interno del ciclo. Magari è la cosa più semplice del mondo ma non ci riesco

  4. #4
    devi mettere le tabelle in JOIN

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    19
    Quote Originariamente inviata da optime Visualizza il messaggio
    devi mettere le tabelle in JOIN
    Fin qua ci sono arrivato. L'ho pure scritto. Però un conto è dirlo, un conto è farlo. E io non riesco a farlo. Mi faresti cortesemente un esempio sulla base di quello che ho scritto nel topic? Grazie

  6. #6
    SELECT TABELLA1.colonne, TABELLA2.colonne
    FROM TABELLA1 LEFT JOIN TABELLA2 ON TABELLA1.chiave=TABELLA2.chiave_corrispondente

    inizia a studiare da qui http://msdn.microsoft.com/en-us/libr...ffice.10).aspx è per Access, ma va bene un po' per tutto

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    19
    Ti ringrazio, e provo. Rimanete sintonizzati per ridere dei miei tentativi

  8. #8

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    19
    Cosa intendi per chiave e chiave corrispondente?

  10. #10

Tag per questa discussione

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.