我在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'];
}
以这种方式,即使循环重复每个数组的所有信息,它只会输出信息,如果有新条目,它将不会重复任何内容。
答案 0 :(得分: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