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

    [MySQL]Collegamento semplice tra due tabelle

    Ho due tabelle, una con una lista di vini, e un'altra con una lista di cibi. Devo fare in modo che per ogni vino che mostro ci sia un elenco dei cibi che si abbinano.

    Quindi PER ogni vino, devo recuperare i cibi abbinabili da una tabella di appoggio e mostrarli? Potreste aiutarmi in modo da compiere un numero esiguo di query?
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Per una cosa del genere le tabelle necessarie sono 3 poichè vuoi sia che ci siano più cibi per uno stesso vino che più vini abbinabili allo stesso cibo, quindi si tratta di una relazione n->m che si implementa correttamente in questo modo

    codice:
    ------------------------
    TABELLA VINI
    id (primary key)
    Descrizione
    ------------------------
    TABELLA CIBI
    id (primary key)
    Descrizione
    ------------------------
    TABELLA RELAZIONI
    idVino ( index )
    idCibo ( index )
    ------------------------
    QUERY
    
    SELECT * FROM
     VINI as V, RELAZIONI as R, CIBI as C
    WHERE
     V.id = $idVino
     R.diVino = V.id
     C.id = R.idCibo
    In questo modo puoi fare anche la cosa inversa (ovvero scrivere tutti i vini buoni con un determinato cibo)
    codice:
    SELECT * FROM
     VINI as V, RELAZIONI as R, CIBI as C
    WHERE
     C.id = $idCibo
     R.diCibo = C.id
     V.id = R.idVino

  3. #3
    la query su cui devo mettere mano è un po' complessa, mi aiuteresti a capire come fare?
    Ho creato la tabella abbinamenti con nome_vino e nome_cibo. Ora devo fare un motore di ricerca che mi mostra i risultati anche a seconda se un vino sia abbinato con un cibo o meno.

    Codice PHP:
    $query "SELECT vini.*, produttori.nome as nomeprod, denominazioni.nome as nomedenom, vitigni.nome as nomevitigno FROM vini INNER JOIN produttori ON (produttori.id_produttore=vini.id_produttore) LEFT JOIN denominazioni ON (denominazioni.id_denominazione=vini.id_denominazione) LEFT JOIN vitigni ON (vitigni.id_vitigno=vini.id_vitigno) WHERE vini.visualizza='SI' ";
        if(
    $_REQUEST['regione'] != ""$query .= "AND regione='".$_REQUEST['regione']."'";
        if(
    $_REQUEST['tipo'] != ""$query .= "AND tipo='".$_REQUEST['tipo']."'";
        if(
    $_REQUEST['prezzo'] != "") {
         if(
    strstr($_REQUEST['prezzo'], "+")) { $query .= "AND prezzo>'40'"; }
         else { 
    $query .= "AND prezzo<='".$_REQUEST['cibo']."'"; }
        }
        
    $query .= " ORDER BY nome ASC"
    ci sarebbe $_REQUEST['cibo'] che contiene il nome del cibo da cercare se è associato ad un vino o meno...
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    scusa ma non capisco bene il senso della frase
    ci sarebbe $_REQUEST['cibo'] che contiene il nome del cibo da cercare se è associato ad un vino o meno...
    Potresti essere un po' più specifico e/o tecnico?

    Cosa vuoi ottenere precisamente?
    Quali record della tabella devono essere visualizzati e quali no?

    inoltre vedo la scritta
    prezzo< $_REQUEST["cibo"]
    ma $request["cibo"] non conteneva una stringa?

  5. #5
    si, scusa al posto di cibo andava Prezzo... cmq in pratica,
    ho una tabella con i vini, una tabella chiamata "abbinamenti" che contiene 2 colonne (nome_vino, nome_cibo).

    Il mio problema sarebbe quello di far cercare all'utente un vino scegliendo, ad esempio, solo il cibo con cui abbinarlo. Come dovrei strutturare la query per cercare non solo nei campi della tabella vini, ma anche nella tabella "abbinamenti"? Non mi interessa poi mostrare a video per ogni vino trovato quali sono gli abbinamenti, ma l'importante è che mi trovi almeno i vini giusti
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  6. #6
    up
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

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.