Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    13

    Collegare più valori di una tabella and un unico valore

    Salve,
    sto provando a fare un database per la mia azienda(organizzazione di eventi) ma sono incappato in un problema.
    Ho due tabelle distinte una congressi ed una hotel; ora, ad ogni congresso possono essere collegati più hotel e dovrei anche avere la possibilità di toglierne/aggiungerne a piacimento.
    Come faccio a collegare più valori della tabella hotel ad un valore della tabella congressi?

    Sto ancora strutturando il database quindi ci vado per ipotesi; non posso creare varie voci hotel in ogni congresso(dove andare ad inserire gli id degli hotel) perchè non sono un numero fisso, per ogni congresso può esserci un hotel come possono essercene quattro.

    Avevo pensato di mettere una voce nella tabella congressi chiamata "hotel" dove in fase di creazione e scelta degli hotel da adibire al congresso venissero inseriti tutti gli id degli hotel scelti(separati da una virgola o da spazi).
    Il problema utilizzando questo metodo è che nel momento in cui volessi recuperare le informazioni dalla tabella congressi come faccio ad ottenere i singoli id(per poter recuperare le info circa gli hotel collegati)?

    Qualche idea o consiglio?

    Vi ringrazio anticipatamente.

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Questa è una relazione chiamata molti a molti (nel caso volessi approfondire il discorso), perchè ogni hotel può comparire in più congressi, e ogni congresso può avere più hotel.

    Molto banalmente crei 3 tabelle:

    Hotel (id, nome, descrizione, ecc)

    Congressi (id, congresso, descrizione ecc)

    rel_hotel_congressi (id_hotel, id_congresso)

    Quando selezioni un congresso puoi selezionare gli hotel facendo una select sulla tabella rel_hotel_congressi o meglio ancora una join in modo da reperire in una sola query le righe della tabella hotels che soddisfino la condizione id_congresso = miocongresso.id

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    13
    Grazie mille, non ci avevo pensato.
    Quindi eventualmente per recuperare le informazioni basta(avendo l'id del congresso) fare
    un SELECT id_hotel FROM rel_hotel_congressi WHERE id_congresso=$id_congresso
    mysqlfetcharray
    foreach con relativa query SELECT * FROM hotel WHERE id=$id_hotel
    mysqlfetcharray
    echo $hotel['nome'], descrizione etc...
    Come procedimento potrebbe andare?
    L'ho pensato così su due piedi ma immagino funzioni, vorrei sapere se come metodo è funzionale o c'e' codice inutile che potrei risparmiare.
    Grazie ancora, approfondirà sicuramente il metodo.

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da g0dl3ss
    Grazie mille, non ci avevo pensato.
    Quindi eventualmente per recuperare le informazioni basta(avendo l'id del congresso) fare
    un SELECT id_hotel FROM rel_hotel_congressi WHERE id_congresso=$id_congresso
    mysqlfetcharray
    foreach con relativa query SELECT * FROM hotel WHERE id=$id_hotel
    mysqlfetcharray
    echo $hotel['nome'], descrizione etc...
    Come procedimento potrebbe andare?
    L'ho pensato così su due piedi ma immagino funzioni, vorrei sapere se come metodo è funzionale o c'e' codice inutile che potrei risparmiare.
    Grazie ancora
    Si, funziona, come ti dicevo, cosi in pratica se hai un congresso che ha 10 hotel, tu fai 11 query, 1 per estrarre gli id degli hotel, e 1 per ogni hotel.

    Una strada migliore sarebbe:

    codice:
    $id_congresso = 1;
    
    $sql = 'SELECT * from hotel h LEFT JOIN rel_hotel_congressi r on r.id_hotel=h.id WHERE r.id_congresso='.$id_congresso;
    In pratica in un'unica query selezioni tutte le righe della tabella hotel che hanno l'id_hotel presente nella tabella rel_hotel_congressi in accoppiata con l'id congresso per cui stai facendo la ricerca.

    Ciao :-)

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.