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

    Relazionare tre tabelle

    Ho una query che non va. Devo reloazionare tre tabelle di cui la struttura semplificata è posta in fondo al post.
    Sapete aiutarmi?
    Grazie per gli aiuti.

    codice:
    		$query = "SELECT *, if(pseudonimo = '', nome, pseudonimo) as ordine,
    		FROM $tabella_artisti 
    		RIGHT JOIN $tabella_artistiarti
    			ON $tabella_artisti.id_artista = $tabella_artistiarti.id_arte
    		LEFT JOIN $tabella_arti
    			ON $tabella_arti.id_arte = $tabella_artistiarti.id_arte
    		ORDER BY ordine";
    L'error_reporting(E_ALL) restituisce "85".

    Le tabelle sono:
    $tabella_artisti {id_artista, nome, ...}
    $tabella_artistiarti (relazione) {id_artista, id_arte}
    $tabella_arti {id_arte, spiegazione}
    All'uomo non verrà mai tanto male quanto dall'uomo.

  2. #2
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    ma ti arriva un errore di PHP o di MySQL?

    Prova ad utilizzare le graffe attorno alle variabili per evitare problemi di interpretazione della stringa, inoltre nel primo right join perche relazionare l'id_artista con l'id_arte ? Immagino vada rivista la clausula ON:

    codice:
    $query = "
        SELECT
            *, if(pseudonimo = '', nome, pseudonimo) as ordine,
        FROM {$tabella_artisti}
        RIGHT JOIN {$tabella_artistiarti}
            ON {$tabella_artisti}.id_artista = {$tabella_artistiarti}.id_artista
        LEFT JOIN {$tabella_arti}
            ON {$tabella_arti}.id_arte = {$tabella_artistiarti}.id_arte
        ORDER BY ordine
    ";
    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


  3. #3
    ma la virgola prima del FROM ????

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Era un problema di nome variabile...

    Scusate tutti. Magari salviamo la discussione se parliamo della funziona GROUP_CONCAT che cmq è pertinente al titolo del thread...
    Non riesco ad usarla e non trovo una spiegazione esauriente su internet.
    Posso applicarla alla query che uso io per avere l'elenco delle arti per ogni artista?

    tipo:
    codice:
    $query = "SELECT *, if(pseudonimo = '', nome, pseudonimo) AS ordine,
    (
    SELECT GROUP_CONCAT($tabella_arti.arte ORDER BY $tabella_arti.arte ASC SEPARATOR ‘, ‘)
    FROM $tabella_artisti_arti
    JOIN $tabella_arti ON $tabella_arti.id_arti = $tabella_artisti_arti.id_arti
    WHERE $tabella_artisti_arti.id_artisti = $tabella_artisti.id_artisti
    ) AS artipraticate 
    FROM $tabella_artisti
    LEFT JOIN $tabella_artisti_arti
    ON $tabella_artisti.id_artisti = $tabella_artisti_arti.id_artisti
    LEFT JOIN $tabella_arti
    ON $tabella_arti.id_arti = $tabella_artisti_arti.id_arti
    WHERE arte = '$art'
    ORDER BY ordine";
    Ricordo che la struttura delle tabelle è più o meno:

    $tabella_artisti {id_artista, nome, ...}
    $tabella_artistiarti (relazione) {id_artista, id_arte}
    $tabella_arti {id_arte, arte, ...}
    All'uomo non verrà mai tanto male quanto dall'uomo.

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.