Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Moderatore di Motori di ricerca e webmarketing L'avatar di rigby76
    Registrato dal
    Oct 2005
    residenza
    Firenze
    Messaggi
    4,913

    Export relazione uno a molti

    Ho un database con due tabelle, per le quali esiste una semplice relazione uno a molti, ad esempio clienti e ordini.

    Ho la necessità di effettuare un export dei dati, generando una lista di tutti i dati principali (clienti) con insieme ad ognuno di essi la lista di tutti i dati secondari (ordini). Per lista del dato secondario intendo riportare un campo significativo (ad esempio il numero dell'ordine) e fare l'equivalente di un implode PHP (ovvero compattare l'array in una stringa).

    Mi chiedo quale sia la tecnica più efficiente per risolvere la questione. L'unico modo di mia conoscenza è fare una query per recuperare il dato principale, fare un loop PHP per ognuno di essi e fare un'ulteriore query per recuperare la lista dei dati secondari per il record in questione.

    In questo caso si risolve il problema, ma con N+1 query, dove N è il numero di record della prima tabella. Esiste un modo più efficiente, magari con un'unica query?

    Grazie per l'attenzione.
    estremizzo, banalizzo e polemizzo!

    Hai letto le FAQ sui Motori di Ricerca?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Basta fare la join tra le tabelle per il campo che genera la relazione tra clienti e ordini

    esempio della struttura delle 2 tabelle

    ordini:
    (PK*)idordine (EK**)idcliente data

    clienti
    (PK)idcliente nome cognome

    *PK = primary key
    **EK = external key

    Query di esempio:
    select * from clienti inner join ordini on clienti.idcliente = ordini.idcliente group by idcliente

    Quindi fai una semplice inner join tra le 2 tabelle sul campo che genera la relazione 1 a n.

    Se tali campi presentano lo stesso nome in entrambe le tabelle puoi semplificare la query così:
    select * from clienti natural join ordini group by idcliente

    A questo punto in php ti scorri i risulati e ne fai quello che vuoi.

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.