2016-06-10 81 views
1

我有兩張桌子一張桌子上有一些項目的細節,這些細節是獨一無二的,另一張桌子上有多個這個項目的圖片。如何使用mysql從兩個表中獲取唯一的數據?

我想要一個項目的圖像。

數據結構:

Table 1: 

Project_id Project_Name 
291   Demo1 
292   Demo2 

Table 2: 

Project_id Img_name Attr_id 
291   p1.png  11 
291   p2.png  12 

我想獲得的圖像,其中attr_id是11

那麼輸出將是

project_id Project_name  Img_name Attr_id 
291   Demo1   p1.png  11 

所以,如何做到這一點?

回答

0

用mysql JOIN

select a.Project_id,a.Project_Name,b.Img_name,b.Attr_id from table1 a join table2 b ON a.project_id = b.project_id where b.attr_id=11 
0

你的情況,你可以使用JOIN -function的mysql:

select * from table1 a,table2 b where a.project_id = b.project_id and attr_id=11 

兩種方式都將導致:

SELECT a.Project_id, a.Project_Name, b.Img_name, b.Attr_id 
FROM table2 b INNER JOIN Table1 a ON (b.Project_id = a.Project_id) 
WHERE b.Attr_id = 11 

或者你可以只通過一個WHERE ... AND - 建造過濾您的選擇相同的輸出:

291 Demo1 p1.png 11 
+0

最低Attr_id形象「在哪裏...... AND」在這種情況下是一個隱含的加入。您應該更喜歡顯式連接,因爲它更快通知,因此讀取查詢更容易。 – Philipp

0

你可以有一個join在這兩個表用於獲取結果:

"select t1.project_id,t1.project_name,t2.img_name,t2.attr_id 
from table1 t1,table2 t2 
where t1.project_id=t2.project_id 
and t2.attr_id=11"; 
0

如果你不想專門查詢Attr_id試試這個。應該讓你與項目有關的

SELECT table1.project_id, table1.project_name, image.Img_name, image.Attr_id 
FROM table1 
    INNER JOIN (SELECT * FROM table2 ORDER BY Attr_id ASC LIMIT 1) 
     AS image ON table1.project_id = image.project_id 
WHERE table1.project_id = 291