2014-11-04 66 views
0

請幫我查詢,我一直在玩這個一段時間,並沒有得到想要的結果。鏈接表查詢

這裏是我的示例數據庫的轉儲:PHPMyAdmin SQL Dump

我想實現的結果是這樣的:

Array 
(
[1] => Array 
    (
     [0] => Array 
      (
       [id] => 1 
       [r_id] => 1 
       [u_id] => 1 
       [e_id] => 1 
       [r] => r1 
       [username] => john 
      ) 

     [1] => Array 
      (
       [id] => 1 
       [r_id] => 1 
       [u_id] => 2 
       [e_id] => 1 
       [r] => r1 
       [username] => mark 
      ) 

     [2] => Array 
      (
       [id] => 1 
       [r_id] => 1 
       [u_id] => 3 
       [e_id] => 1 
       [r] => r1 
       [username] => andrew 
      ) 

    ) 

[2] => Array 
    (
     [0] => Array 
      (
       [id] => 2 
       [r_id] => 
       [u_id] => 
       [e_id] => 1 
       [r] => r2 
      ) 

    ) 
) 

這是最接近查詢我可以做:My PHP code

回答

0

嘗試在您的查詢中使用內連接

SELECT 
    tb1.*, tb2.e, tb3.e_id, tb3.r, tb4.r_id, tb4.u_id 
FROM 
    tb1 
INNER JOIN 
    tb2 ON tb1.id = tb2.id 
INNER JOIN 
    tb3 ON tb1.id = tb3.id 
INNER JOIN 
    tb4 ON tb1.id = tb4.id 

編輯查詢編輯

$sack[$rowId][] = $row; 

$sack[] = $row; 

$sack[$rowId] = $row; 
+0

它具有這樣的結果[陣列產生(http://pastebin.com/raw.php?i=kSLzz39Y) – 2014-11-04 10:28:54

+0

你能給我你的PHP代碼的一些更多的數據? – 2014-11-04 10:51:38

+0

問題的底部是代碼的鏈接。 – 2014-11-04 11:05:34

0

@GusDB你的暗示,開始在TB3是關鍵後,所以這裏的答案

select * from tb3 
    left join tb4 on tb3.id=tb4.r_id 
    left join tb1 on tb4.u_id=tb1.id 

The PHP Code

<?php 

$sql = mysqli_query($con, ' 
      select * from tb3 
       left join tb4 on tb3.id=tb4.r_id 
       left join tb1 on tb4.u_id=tb1.id 
'); 

if (!$sql) { 
    printf("Error: %s\n", mysqli_error($con)); 
    exit(); 
} 

$sack = Array(); 
while($row = mysqli_fetch_assoc($sql)) { 
    $sack[$row['r_id']][] = $row; 
} 

echo "<pre>"; 
print_r($sack); 
echo "</pre>"; 

?>