2014-05-23 40 views
0

我有四個表格,我想加入所有這些表格。我已經成功加入了3張桌子,但是當我嘗試加入第四張桌子時,它不起作用。我已設置error_reporting(E_ALL);並將or die(mysqli_error($con));添加到我的查詢結尾,但它不顯示任何錯誤,只是一個白色屏幕。如何在MySQL中連接四個表格[PHP]

當我嘗試加入投票表時,它停止工作。

我的表是votesusersringsposts

這裏是我的查詢:

 $sql = mysqli_query($con, "SELECT * FROM posts p 
            INNER JOIN rings r ON p.rid = r.id 
            INNER JOIN users u ON p.uid = u.id 
            INNER JOIN votes v ON p.pid = v.pid 
            WHERE p.rid IN ('$rja') AND p.uid != '$uid' 
            AND p.deleted = '0' 
            ORDER BY p.date_posted DESC" 
          ) or die(mysqli_error($con)); 

$rja是一個數組。

投票表:

vid | pid | uid | vote_type 

用戶表:

id | username | password | email 

帖子表:

pid | uid | rid | body | votes | deleted | date_posted 

環表:

id | title | category | rating | user_created 

如果您有任何疑問,請發表評論

+0

你知道,你可以對它進行調試,打印屏幕上的查詢,並將其複製到phpMyAdmin或任何其他MySQL管理工具。 –

+0

我已將它複製到phpMyAdmin。它只是說它是成功的。 – Beehive

+1

除了說它是成功的,它是否返回任何結果?此查詢只會顯示有投票的帖子。 – Barmar

回答

3

試着左加入

SELECT * FROM posts p 
    INNER JOIN rings r ON p.rid = r.id 
    INNER JOIN users u ON p.uid = u.id 
    LEFT JOIN votes v ON p.pid = v.pid 
    WHERE p.rid IN ('$rja') AND p.uid != '$uid' 
    AND p.deleted = '0' 
    ORDER BY p.date_posted DESC" 
+0

對不起,沒有工作 – Beehive

+0

爲什麼要正確加入?我認爲他更需要一個左連接,所以他可以在沒有投票的情況下獲得帖子。 – Barmar

+0

正確的加入會找到沒有匹配的帖子的投票,看起來倒退了。 – Barmar