Visualizzazione risultati 1 fino 3 di 3

Discussione: Codice Interrogazione tra più tabelle in php

  1. #1
    Guest

    Predefinito Codice Interrogazione tra più tabelle in php

    Salve a tutti, ho un problema con il visualizzare i dati (in una pagina .php) che ho inserito nelle tabelle del database (phpmyadmin).
    In pratica, se eseguo con questo codice:
    $res = mysql_query("SELECT socio.cognome, socio.nome, socio.indirizzo,socio.indirizzo_email, socio.telefono, zona.descrizione, attivita.desc1, attivita.desc2, attivita.desc3 FROM socio,zona,attivita",$db);
    Se per esempio sono inseriti solo due record, ne verranno visualizzati 8, perchè ovviamente nel codice non sono collegati le chiavi esterne con le chiavi primarie.

    Ma se eseguo la pagina php con questo codice:
    $result1 = mysql_query("SELECT socio.cognome, socio.nome, socio.indirizzo,socio.indirizzo_email, socio.telefono, zona.descrizione, attivita.desc1, attivita.desc2, attivita.desc3 FROM socio,zona,attivita WHERE id_socio=codice AND id_zone=id_zona",$db);
    Non verrà visualizzato nulla, nessun record, come se nelle tabelle non fosse caricato nessun record, sapete dirmi dove è il problema?
    Ultima modifica di dearwork : 29-03-2015 alle ore 10.18.30

  2. #2
    Guest

    Predefinito

    La costruzione della query così come la hai esposta presuppone che OGNI record della tabella 1 abbia il corrispettivo sia nella tabella 2 che nella 3. Se così non è, ovvero se un record correlato manca nella tabella 2 o tabella 3, quel record non sarà estratto. E se NESSUN record ha i correlativi nella altre tabelle non otterrai risultati.

    Per risolvere il problema vedi come funzionano le JOIN, e nel caso specifico LEFT JOIN.

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da vplaza Visualizza messaggio
    La costruzione della query così come la hai esposta presuppone che OGNI record della tabella 1 abbia il corrispettivo sia nella tabella 2 che nella 3. Se così non è, ovvero se un record correlato manca nella tabella 2 o tabella 3, quel record non sarà estratto. E se NESSUN record ha i correlativi nella altre tabelle non otterrai risultati.

    Per risolvere il problema vedi come funzionano le JOIN, e nel caso specifico LEFT JOIN.
    Si, i record della tabella 1 avrà il corrispettivo nella tabella 2 e 3. Ho provato anche in Microsoft Acess e funziona la query.
    Tutto risolto! il codice è giusto, il problema che avevo le chiavi esterne delle tabelle che non erano in "Auto Incremento" quindi restavano di valore '0', mentre le chiave primarie incrementavano quindi, le chiavi, non essendo di valore uguale non mi faceva visualizzare nulla.
    Grazie mille per l'interesse! :)
    Ultima modifica di dearwork : 29-03-2015 alle ore 10.21.12

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •