2017-06-17 43 views
0

我有兩個列一列與另一相關...MySQL錯誤來選擇數據

表:base_data

id |---name----|-----des 
1 | some name1 | The description1 
2 | some name2 | The description2 

表:照片

id |---p_id----|-----photo 
1 |  1  | img1s.jpg 
2 |  1  | img1w.jpg 
3 |  2  | img2.jpg 
4 |  2  | img14.jpg 
5 |  2  | img15.jpg 

我想選擇所有數據從表1(base_data)和相關行中的一行從照片:表我怎麼能做到這一點?

我不想選擇由每組最大ň我想從第一個表中的所有數據,並且只有一排與第一表行ID,而不是其他的只是第一場比賽相匹配的第二個表。

我想要的結果...

id |---name----|---des----|---p_id----|---photo----| 
1 | some name |the des..1| 1  | img1s.jpg| 
2 | some name |the des..2| 2  | img2.jpg| 
+0

請修改您的結果,以顯示您希望數據輸出,而不是數組定義。 – SandPiper

+0

這似乎是另一個[標籤:最大n-per-group] SQL問題。解決方案已多次發佈。 –

+0

不,我不想選擇由每組最大ň我想從第一表中選擇的所有數據,只有一排與第一表行ID,而不是其他的只是第一場比賽相匹配的第二個表。 –

回答

0

如果你想在最低的字母數字照片的名字,在MySQL中,你可以這樣做:

select 
    t1.*, 
    t2.photo 
from 
    base_data as t1 
    left join (
     select 
      p_id, 
      min(photo) as photo 
     from 
      photos 
     group by 
      p_id 
     ) as t2 on t2.p_id = t1.id; 
+0

看有兩個入口在base_data表,並在照片表5項,我只想要一個照片的base_data表匹配其ID和p_id的一個條目。 –

1

我想你想base_data與關聯拍攝的第一張照片,應該是最低的那張照片photos.id。在MySQL中,你可以寫出如下這樣:創建這給出了一箇中間查詢 - 任何p_id - 具有最低id相應的記錄。然後,將這個中間查詢結果加入base_data。希望有沒有很多錯別字:-):

select b.id, p2.photo 
from base_data b left join 
    (select p.photo, p.p_id, min(id) from photos p group by p.p_id) p2 on b.id = p2.p_id 
+0

是的,你是對的 –

+0

但我怎麼能只是從照片表base_data表和照片選擇ID ???? –

+1

非常感謝,兄弟。 –