2014-11-04 85 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>"; 

?>