连接结果(多个表)php,mysqli INNER JOIN

时间:2012-08-14 13:38:40

标签: mysqli inner-join

(在每个结果中包含多对多结果的最佳做法?)

每个帖子都有很多资源。我想告诉他们。 它分开工作,如下:

资源和帖子之间的所有连接:

   $result = $mysqli->query("SELECT *
        FROM kopplaKontorsplatsResurser
        INNER JOIN resurser
        ON kopplaKontorsplatsResurser.resurs_id=resurser.id
        ");

    $num_results = mysqli_num_rows($result);
    for($i=0; $i<$num_results; $i++) {
    $row = $result->fetch_array(MYSQLI_ASSOC);
    echo 'Resource with id: '.$row[resurs_id];
    echo '<br>';
    echo 'Is connected to the post: '.$row[kontorsplats_id];
    echo '<br>';
    echo 'What resource is this? '.$row[resurs];;
    echo '<br><br>';
    }

这是我获取每个帖子(kontorsplats)的信息

  $result = $mysqli->query("SELECT *
                 FROM kontorsplatser
                 INNER JOIN geo_orter
                 ON kontorsplatser.ort_id=geo_orter.ort_id
                 ");
    $num_results = mysqli_num_rows($result);

    for($i=0; $i<$num_results; $i++) {
    $row = $result->fetch_array(MYSQLI_ASSOC);

    echo '<div class="kontorsplats">';
    $arbetsplatsensID = $row[id];
    $rubriken = $row[rubrik];
    $ort_id = $row[ort_id];
    $ort = $row[ortnamn];

    echo '<h4>'.$rubriken.'</h4>';
    echo '<h5><a href="">'.$ort.'</a></h5>';

       ---> Show the connected resources here. :D <------

    echo '</div>';

我正在考虑创建一个包含所有资源及其连接的数组,并为每个div循环遍历它,但这会是最有效的方法吗?

介入包含别名: devshed

1 个答案:

答案 0 :(得分:0)

我这样解决了,仍然有一种挥之不去的感觉,它不是最佳的,但它有效!

首先将所有连接和资源保存到数组中

    $result = $mysqli->query("SELECT *
        FROM kopplaKontorsplatsResurser
        INNER JOIN resurser
        ON kopplaKontorsplatsResurser.resurs_id=resurser.id
        ");
    $num_results = mysqli_num_rows($result);
    for($i=0; $i<$num_results; $i++) {
    $row = $result->fetch_array(MYSQLI_ASSOC);

        $dennaKontorsplats = $row[kontorsplats_id];
        $resursens_id = $row[resurs_id];
        $resurskopplingar[$dennaKontorsplats][$resursens_id] = $row[resurs];
    }

然后为每个帖子循环播放

//Leta upp alla resurskopplingar: 
    foreach ($resurskopplingar as $kontoretsid => $lvl1) {
        if($arbetsplatsensID == $kontoretsid){
        foreach ($lvl1 as $lvl2) {
            echo $lvl2;
        }
        }
    }