2011-02-06 19 views
18

Come potrei preformare due join interni in una query?Due join interni MYSQL

Ie: tre tavoli

fattura
Indirizzo
client

fattura ha una colonna che fa riferimento a un id in clienti. Ha anche una colonna che fa riferimento a un indirizzo. Devo ottenere sia il nome dei client dalla tabella abbinata sia l'indirizzo dalla tabella abbinata. Come potrei INNER JOIN entrambe le tabelle?

aggiungerò qualche dettaglio ...
fattura ha indirizzo righe (riferimenti Operando), client (client riferimenti id), id e note cliente ha righe first_name, last_name indirizzo ha righe STREET_NAME e la città

ho bisogno di tirare su

+0

Servono più dati. –

risposta

29

È possibile avere tutte le clausole JOIN necessarie nella query. Ognuno ha una clausola ON in cui si specificano le colonne correlate tra le tabelle unite.

SELECT 
    columns 
FROM 
    invoice 
INNER JOIN 
    address 
ON 
    join_condition 
INNER JOIN 
    client 
ON 
    join_condition 
+0

Non ero a conoscenza di questo. Buono a sapersi. Grazie! – Yoshiyahu

8

Qualcosa di simile:

SELECT 
    c.*, i.*, a.* 
FROM 
    invoices i 
INNER JOIN 
    client c 
ON 
    i.clientid = c.clientid 
INNER JOIN 
    address a 
ON 
    a.clientid = c.clientid 
WHERE 
    i.id = 21 

non dimenticate di selezionare solo i campi richiesti, non è * (tutti).

+0

Funzionerà senza un secondo ON? – Yoshiyahu

+0

Whoops, ho dimenticato di aggiungere quello. Vedi modifica. – Prisoner

+0

Ha funzionato, grazie –