Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Query su tre tabelle

  1. #1

    Query su tre tabelle

    Salve ragazzi. Ho una tabella (jewelry_extra) nella quale sono presenti i campi material_id e target_id

    I due campi contengono una referenza rispettivamente al campo material_id della tabella jewelry_materials ed al campo target_id della tabella jewelry_targets.

    Ora, con un'unica query vorrei che quando estraggo i valori da jewelry_extra invece di mostrarmi l'id contenuto in jewelry_extra.material_id e jewelry_extra.target_id mi mostri i valori contenuti in jewelry_materials.material_name e jewelry_targets.target_name.

    Sto provando a fare alcuni left join ma non ne sto ricavando un bel niente (l'ho sempre considerata un po' ostica come sintassi questa del left join!).

    Qualcuno è in grado di aiutarmi? Grazie mille! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  2. #2
    la sintassi è facile, ed è uguale per qualsiasi tipo di join:

    SELECT campi tabella1 <TIPO DI JOIN> JOIN tabella2 ON <CONDIZIONE DI JOIN>

    Nel tuo caso, se quelle chiavi esterne riferiscono dati sempre esistenti nelle altre tabelle, mi sembra più sensata una inner join rispetto a una left, la sintassi sarebbe:

    SELECT ... FROM jewelry_extra AS extra INNER JOIN jewelry_materials AS materials ON extra.material_id = materials.material_id INNER JOIN jewelry_targets AS targets ON extra.target_id = targets.target_id

  3. #3
    Grazie mille per la pronta risposta! Mentre aspettavo, però ho continuato a vedere le discussioni restituite dalla ricerca e proprio nell'ultima (quella che ho detto "la vedo dopo che ho postato"!) ho trovato il link ad una guida su mysql presente su html.it. Alla fine ho trovato la soluzione. Ecco la query che ho creato:

    Codice PHP:
    select materials.material_name as material ,
           
    targets.target_name as target
    from zen_product_jewelry_extra 
    as jewelry,
         
    zen_jewelry_materials as materials ,
         
    zen_jewelry_targets as targets
    where jewelry
    .material_id materials.material_id
    and   jewelry.target_id targets.target_id
    and jewelry.products_id 184 
    Funziona perfettamente e fa proprio quello che volevo!
    Grazie ancora comunque per la risposta! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  4. #4
    l'INNER JOIN prevede quella sintassi "compatta", con le virgole, ma la LEFT JOIN no per esempio, ragion per cui se impari la sintassi generica che ti ho indicato non sbagli mai, a prescindere dal tipo di join che vuoi realizzare.

  5. #5
    Ho capito! Grazie! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.