Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310

    come fare una query mysql con 3 tabelle?

    Codice PHP:
    SELECT tabella1.product_idtabella2.product_idtabella1.order_idtabella2.product_code
    tabella1.dettaglio1tabella1.dettaglio2tabella1.dettaglio3
    FROM tabella1 LEFT JOIN tabella2
    USING 
    (product_id)
    WHERE tabella1.product_id tabella2.product_id
    la situazione è questa

    - tabella 1
    product_id
    order_id

    - tabella2
    product_id
    product_code

    ora, io ho una terza tabella (chiamiamola tabella 3)

    - tabella3
    product_id
    order_id
    options

    vorrei aggiungere alla query di sopra il campo tabella3.options. Qualche consiglio?
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  2. #2
    Premesso che non ho mai usato USING in una query quindi non so a cosa serva.
    E' un semplice caso di JOIN multipla.

    Ti spiego:

    tab1
    campo1_a campo1_b

    tab2
    campo2_a campo2_b

    tab3
    campo3_a campo3_b campo3_c

    Se faccio: SELECT * FROM tab1 JOIN tab2 ON campo1_a = campo2_b;

    Mysql crea la seguente tabella:

    campo1_a campo1_b campo2_a campo2_b

    Questa anche se è una tabella temporanea (vale per la durata della query) può essere usata per effettuare tutte le operazioni che ci servono (sempre con la stessa query ovviamente). Quindi se fai la join con la terza tabella funzionerà!

    Esplicitamente diventa:
    SELECT *
    FROM ( tab1 JOIN tab2
    ON campo1_a = campo2_b)
    JOIN tab3
    ON campo1_a = campo3_a;

    Ovviamente occhio alle condizioni di join e dopo il secondo ON puoi usare tranquillamente un where,order by, limite ecc ecc.

    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  3. #3
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    grazie, proverò e ti farò sapere
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  4. #4
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    ho provato, e mi pare di aver risolto

    però succede una cosa strana, una voce dal db me la estrae doppiamente. Solo quella (ho fatto una query limitando a 10 il risultato)

    Codice PHP:
    SELECT table_1.productidtable_2.productidtable_1.orderidtable_2.productcode
    table_1.details1table_1.details2table_1.details3table_3.product_options
    FROM 
    (table_1 JOIN table_3 ON table_1.productid table_3.productid AND 
    table_1.orderid table_3.orderid)
    JOIN table_2 ON table_1.productid table_2.productid ORDER BY date LIMIT 10
    è corretta cosi la query?
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  5. #5
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    edit
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  6. #6
    Nono aspè perché hai messo due campi nella clausola ON della prima join?

    Ricordati che se hai bisogno di DUE RELAZIONI ON molto probabilmente usi la stessa tabella in modo diverso e quindi devi considerarla come un'ulteriore tabella!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  7. #7
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da Nunkij
    Nono aspè perché hai messo due campi nella clausola ON della prima join?

    Ricordati che se hai bisogno di DUE RELAZIONI ON molto probabilmente usi la stessa tabella in modo diverso e quindi devi considerarla come un'ulteriore tabella!
    ho messo due campi perchè avevo bisogno di due corrispondenze..

    come modificheresti la query? :master:
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  8. #8
    Mi spieghi esattamente come sono fatte le corrispondenze? Scrivimi a parole cosa deve fare la query altrimenti non riesco ad aiutarti!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  9. #9
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Codice PHP:
    SELECT table_1.productidtable_2.productidtable_1.orderidtable_2.productcode
    table_1.details1table_1.details2 table_1.details3,
    table_3.product_options
    FROM 
    (table_1 JOIN table_3 ON table_1.productid table_3.productid AND 
    table_3.orderid table_1.orderid)
    JOIN table_2 ON table_1.productid table_2.productid LIMIT 15 
    questi dovrebbero essere i collegamenti

    - table_1
    product_id
    order_id

    - table_2
    product_id
    product_code

    ora, io ho una terza tabella (chiamiamola tabella 3)

    - table_3
    product_id
    order_id
    options

    table_1 e table_3 hanno entrambi product_id e order_id.
    table_1 ha possibile uno stesso order_id ma possibili multipli product_id per lo stesso order_id.
    Per questo mi serve (da table_1) product_id e order_id, con questi due vado dentro table_3 e dove trovo questi due prendo table_3.options.
    Con table_1/3.productid mi pesco table_2.productcode.

    E' un po complesso...
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

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.