2017-06-19 129 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