2012-04-21 13 views
12

che sto usando questa query:query MySQL per unire tre tabelle

SELECT a.sales_id, d.bus_title, a.cat_id 
FROM tbl_sales a 
INNER JOIN tb_category b ON a.cat_id = b.cat_id 
INNER JOIN tbl_business d ON d.bus_id = a.bus_id 

che produce questo risultato:

sales_id | bus_title  |cat_id 
----------|----------------|------------ 
1  | Business 1  | 6 
2  | Business 12 | 12 
3  | Business 123 | 25 

ho cambiato il cat_id campo in una nuova tabella denominata tb_sales_category che contiene i campi sales_category_id , sales_id, cat_id. Come posso scrivere la nuova query unendomi anche a questa tabella, ottenere lo stesso risultato di cui sopra?

Sono una specie di nuovo database, ho bisogno di aiuto. Grazie in anticipo

risposta

12

Prova questo:

SELECT a.sales_id, d.bus_title, s.cat_id 
FROM tbl_sales a 
INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id 
INNER JOIN tbl_business  d ON a.bus_id = d.bus_id 
INNER JOIN tb_category  b ON s.cat_id = b.cat_id 

L'idea è abbastanza semplice, il primo campo nella nuova tabella tb_sales_category che è sales_category_id sta lavorando come un surrogato chiave, non ha nulla a che fare con il relazioni tra le altre due tabelle. Poi arriviamo agli altri due campi che sono sales_id, cat_id, questi ciò che dovresti mappare agli altri due lati delle relazioni.

Non è possibile Join tb_category b ON a.cat_id = b.cat_id sul nuovo schema siccome non abbiamo più a.cat_id, e qui viene il nuovo ruolo tavolo tb_sales_category, inserendolo con due lati vincolanti, uno con INNER JOIN tb_category b ON s.cat_id = b.cat_id e l'altra con INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id che dovrebbe essere fatto.

Spero che questo abbia senso.

+1

Anche questo funziona bene, grazie –

+1

grazie anche per la spiegazione, questo mi aiuterà nella mia auto processo di apprendimento –

3

io non sono un grande fan di inner join in modo da provare questo:

SELECT a.sales_id, a.cat_id, c.bus_title 
FROM tb_sales_category a, tb_sales b, tbl_business c 
WHERE a.sales_id = b.sales_id 
AND b.bus_id = c.bus_id 
+2

Perché mai don Ti piacciono gli INNER JOINs? – liquorvicar

+0

@ gimg1 Grazie, questo è lo scopo –

Problemi correlati