Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    Problema override variabili php su join Mysql

    Salve a tutti,
    prima la query:

    Codice PHP:
    SELECT from tab1.anagrafica 
    LEFT JOIN tab2
    .tipo_socio ON anagrafica.tipo_socio_id tipo_socio.id 
    WHERE anagrafica
    .id 
    La query pesca tutti i campi e come logica gira correttamente, il problema si pone quando creando l'array associativo dei risultati, il campo id della prima tabella viene ovviamente sovrascritto dal campo id della seconda tabella (perchè ovviamente hanno lo stesso nome).

    Posto che volevo evitare di listare tutte le colonne della SELECT (motivo per cui ho usato l'asterisco), i quesiti sono questi:

    1) C'è modo di escludere quella singola colonna dal set di result? (Immagino di no perchè è il campo che lega le due tabelle...)

    2) Considerato l'ampio numero di volte in cui utilizzerò l'asterisco, in mancanza di una soluzione diversa, mi conviene dare nomi univoci alle varie colonne anche su tabelle diverse?

    3) Ultima e più importante, esiste una soluzione alternativa al listato intero?

    Grazie a tutti!

  2. #2
    Ti consiglio di postare nella sezione Database, comunque se hai due o più tabelle in join con dei campi aventi lo stesso nome ti basta inserire il nome della tabella prima del campo.
    Ad esempio se hai tab1 e tab2 entrambe contenenti un campo id puoi fare una cosa del genere:

    SELECT tab1.id AS id1, tab2.id AS id2, ...........
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Grazie Satifal, ma fare il listato intero era proprio quello che avrei voluto evitare.
    Per questo chiedevo se c'era un'alternativa

  4. #4
    Chi io sappia no, ma in questa sezione ci sono sicuramente persone più competenti di me in materia.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Ti basta aggiungere alla select una colonna "fittizia" con un nome diverso come alias di quella doppia.
    codice:
    SELECT *, a.tipo_socio_id as tiposocio from tab1.anagrafica a
    LEFT JOIN tab2.tipo_socio ts ON a.tipo_socio_id = ts.id 
    WHERE anagrafica.id = 1  
    In questo modo, in 'tiposocio' avrai il tipo socio dell'anagrafica anche quando l'altro è null

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Grazie Luca,
    ho provato questa formula, ma in realtà non risolve il problema. Nel set di risultati continua comunque ad uscirmi fuori anagrafica.id e tipo_socio.id.

    Creando un array associativo col result set, entrambe finiscono nell array col nome di array['id'], e la seconda sovrascrive la prima. Volevo da questo array creare un ciclo foreach da sfruttare per ciclare la visualizzazione associando i valori di un altro array alle caratteristiche degli input type html, ma mi sono reso conto solo dopo che per motivi di visualizzazione su cui non posso operare questa non era la soluzione giusta (ed era anche il motivo per cui in principio avevo postato questo topic in "PHP").

    Mi son dovuto piegare al listato e ad una lunga sfilza di input type manuali, con la promessa fatta a me stesso che comunque in futuro rimetterò mani in questa sezione per ottimizzare il codice.

    Grazie comunque per l'aiuto!

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Scusa, ma avevo capito male il tuo problema. In realtà la soluzione è la stessa che ti ho postato prima, basta modificare gli alias
    codice:
    SELECT *, a.id as id_anagrafica, ts.id as id_tipo_socio from tab1.anagrafica a
    LEFT JOIN tab2.tipo_socio ts ON a.tipo_socio_id =ts.id 
    WHERE anagrafica.id =1
    Così hai 'id_anagrafica' e 'id_tipo_socio' con le due id. Anche se probabilmente la seconda è inutile perché avresti già tipo_socio_id

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.