2015-05-01 64 views
1

我有2個表:如何從B表中只選擇一行?

sma_db

+----+----------+-------+ 
| ID | title | catid | 
+----+----------+-------+ 
| 1 | Hi  | 4 | 
| 2 | Hello | 4 | 
| 3 | Test  | 5 | 
+----+----------+-------+ 

sma_files

+----+----------+---------+ 
| ID | name |entry_id | 
+----+----------+---------+ 
| 1 | a.jpg | 1 | 
| 2 | b.jpg | 1 | 
| 3 | c.jpg | 2 | 
+----+----------+---------+ 

我的查詢爲:

$sql = mysql_query("SELECT * FROM sma_db 
        LEFT OUTER JOIN sma_files 
        ON sma_db.id = sma_files.entry_id 
        WHERE catid = '4'") or die(mysql_error());; 

while($affcom = mysql_fetch_assoc($sql)){ 
    $title = $affcom['title']; 
    $name = $affcom['name']; 
    echo $title; 
    echo $name; 
} 

如何從sma_files表中選擇只有一個行? ??

的輸出上面的查詢:

Hi a.jpg 
Hi b.jpg 
Hello c.jpg 

輸出我需要:

Hi a.jpg 
Hello c.jpg 
+1

使用限制1,它會給你一個結果 – Saty

+0

我不需要一個結果,我需要所有的結果,而不必重複它第二個表 –

+3

你問這個已經http://stackoverflow.com/q/29905891 /這個問題有什麼不同? –

回答

2
$sql = mysql_query("SELECT * FROM sma_db 
        LEFT OUTER JOIN sma_files 
        ON sma_db.id = sma_files.entry_id 
        WHERE catid = '4' 
        GROUP BY sma_files.entry_id") 
        or die(mysql_error()); 
+0

LIMIT 0,1沒有幫助,我需要所有的結果,而不用重複它的第二張表**問題更新請仔細閱讀。** –

+0

@SaeedAknan編輯我的回答 – Saty

+1

@SaeedAknan *「完美,仍然一個問題:如果我爲第一張表格提交一個記錄而沒有上傳第二張圖片的圖片(xx.jpg),它不會出現在輸出中「* - 就我而言,你應該接受這個答案。你所要求的是完全不相關的,應該作爲一個新問題發佈。您的原始問題中沒有代碼來支持您的「新」請求。 –

0

使用Group By

SELECT * FROM sma_db 
LEFT OUTER JOIN sma_files 
ON sma_db.id = sma_files.entry_id 
WHERE catid = '4' 
GROUP BY `entry_id` 
+0

限制1沒有幫助,更新的問題請仔細閱讀。 –

+0

@SaeedAknan更新GROUP BY –

0

試下面的查詢

SELECT * FROM `sma_db` 
INNER JOIN `sma_files` 
ON `sma_db`.`id` = `sma_files`.`entry_id` 
WHERE `sma_db`.`catid` = '4'" 
+0

同樣的結果:( –