0

我对 2 个表之间的关联有疑问:我有

table 1 "flowers": "id", "flower";
table 2 "colors": "id", "color";
table 3 "association_flowers_colors": "id", "id_flower", "id_color";

现在,一朵花可以有多种颜色,现在的问题是父亲的所有信息都在一个数组中。es:如果我得到第一个表中的所有信息并获取它们,我将拥有

array([0](array[id]=>0, [flower]=>rose), [1]array([id]=>1, [flower]=>tulip));

那么如果我从第二张桌子上收集所有信息,我将拥有

array([0]array([id]=>0, [color]=>red)[1]), [1]array([id]=>1, [color]=>white));

现在的问题:我需要得到一个数组

array([0]array([id]=>0, [flower]=>rose, [color]=>red, [color]=>white), [1]array([id]=>1, [flower]=>tulip, [color]=>red, [color]=>white));

有没有一种简单的方法可以通过一个详细的查询来完成,或者我应该使用 while 循环或类似的东西,然后合并我得到的信息?

谢谢

编辑:

function get_flowers(){
    include('../actions/db_connection.php');
        $result = mysqli_query($db_connection, "select * 
            from flowers f
            left outer join association_flowers_colors a on f.id = a.id_flower
            left outer join colors c on c.id = a.id_color");
        mysqli_close($db_connection);
         $flowers = array();
          while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
         $flowers[] =  $row;
        };

    return $flowers;
}

在阅读了 juergen 的回复后,我最终得到了这个,看起来它有效的问题是它为我提供了每种颜色的数组(总共 4 个数组),而不是只给我 2 个包含两种颜色的数组(总共2个数组)。

edit2:好的,我没有找到一种方法来检索 2 个数组(而不是 4 个)中的所有信息,但无论如何我设法以可读的方式打印它们:

while($row = mysqli_fetch_array($flowers)){


    if ($flowerID != $row['id_flower']) {
        echo "<div class='flowerContainer'>";
        echo "<input type='hidden' name='flowerID' value='".$row['id_flower']."'>";
        echo "Name: ".$row['flower']."<br />";
        }

    echo $row['color']."<br />";
    if ($flowerID == $row['id_flower']) {
        echo "</div>";
        echo "<hr>";
    }

    $flowerID = $row['id_flower'];
    }

这样,即使循环重复每个数组的所有信息,它也只会在有新条目时输出信息,并且不会重复任何内容。

4

1 回答 1

2
select * 
from flowers f
left outer join association_flowers_colors a on f.id = a.id_flower
left outer join colors c on c.id = a.id_color
于 2012-11-14T18:02:46.773 回答