2017-06-19 161 views
0

假設我有2表,其中PID和id的主鍵和自動遞增創建關係

  1. 含有張貼柱

    pid | post|  
    
  2. 含有聯柱

    id | pid | name 
    

and i when獲取後的數據(假設我知道的[名]我想獲取帖子ID)

我可以使用兩個循環在PHP中做到這一點像

$b=mysqli_query($connect,"SELECT pid FROM linking WHERE name='bla'") 
while($a=mysqli_fetch_array($b)){ 
    $c=mysqli_fetch_array(mysqli_query($connect,"SELECT post FROM posting WHERE pid='$a["pid"]' LIMIT 1")) 
} 

但我知道有更好的方式來做到這一點在SQL中使用的關係,如果有人可以幫助我查詢

我看,但發現一些內部聯接,我不明白

+0

也許寧可使用連接和獲取的一次。 –

回答

0

這應做到:

SELECT pid FROM linking 
JOIN SELECT posting on linking.pid=posting.pid 
WHERE linking.name='bla' 

如果你想只在第二個表格的第一行,你會做這樣的事情:

SELECT * 
    FROM linking 
    LEFT JOIN posting a ON posting.pid = (
    SELECT 
     MIN(posting.pid) pid2 
    FROM posting p2 
    WHERE p2.pid2 = linking.pid 
) 
WHERE Linking.name='bla' 
+0

運行上面的查詢給出錯誤 – Aniket

+0

哪個查詢和哪個錯誤? –

+0

in 1 this --->#1064 - 你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到正確的語法,以便在'選擇發佈在linking.pid = posting.pid WHERE linking.name ='bla'LIMIT 0,30'在第2行,,,,,第二個查詢--- >>>>'on clause'中的未知列'posting.pid' – Aniket