连接多个表并添加符号

时间:2019-01-10 07:27:54

标签: php mysql sql

我有2个查询要从多个表中获取行。这些查询已经测试过,并返回我想要的行。

这是第一个查询。

select mst_province.provinsi as provinsi, mst_kab.kabupaten as kabupaten, form_kuesioner_pengelola.namasite as nama 
from form_kuesioner_pengelola 
join form_kuesioner_surveyor on form_kuesioner_surveyor.namalokasi = form_kuesioner_pengelola.namasite 
join mst_province on mst_province.id_prov = form_kuesioner_pengelola.idprov 
join mst_kab on mst_kab.id_prov = form_kuesioner_pengelola.idprov and mst_kab.id_kab = form_kuesioner_pengelola.idkab 
group by form_kuesioner_pengelola.namasite 
order by form_kuesioner_pengelola.idprov, form_kuesioner_pengelola.idkab

我在带有符号的表格中显示它们

echo "<tr> <th>No.</th> <th>Provinsi</th> <th>Kabupaten</th> <th>Namasite</th> <th>Form Manfaat</th> <th>Form Pengelola</th> <th>Form Surveyor</th> <th>status</th>";

while($row = mysqli_fetch_array($rdata)) {
    echo "<tr>";
    echo '<td>' . $no . '</td>';
    echo '<td>' . $row['provinsi'] . '</td>';
    echo '<td>' . $row['kabupaten'] . '</td>';
    echo '<td>' . $row['nama'] . '</td>';
    echo '<td>&#9989;</td>';
    echo '<td>&#9989;</td>';
    echo '<td>&#9989;</td>';
    echo '<td>complete</td>';

    echo "</tr>";
    $no++;
}  

第二个

select mst_province.provinsi as provinsi, mst_kab.kabupaten as kabupaten, form_kuesioner_pengelola.namasite as nama 
from form_kuesioner_pengelola 
join mst_province on mst_province.id_prov = form_kuesioner_pengelola.idprov 
join mst_kab on mst_kab.id_prov = form_kuesioner_pengelola.idprov and mst_kab.id_kab = form_kuesioner_pengelola.idkab 
group by form_kuesioner_pengelola.namasite 
order by form_kuesioner_pengelola.idprov, form_kuesioner_pengelola.idkab

我将它们显示在下表中

echo "<tr> <th>No.</th> <th>Provinsi</th> <th>Kabupaten</th> <th>Namasite</th> <th>Form Manfaat</th> <th>Form Pengelola</th> <th>Form Surveyor</th> <th>status</th>";

while($rowtable = mysqli_fetch_array($rdatatable)) {
    echo "<tr>";
    echo '<td>' . $notable . '</td>';
    echo '<td>' . $rowtable['provinsi'] . '</td>';
    echo '<td>' . $rowtable['kabupaten'] . '</td>';
    echo '<td>' . $rowtable['nama'] . '</td>';  
    echo '<td>&#9989;</td>';
    echo '<td>&#10006;</td>';
    echo '<td>&#10006;</td>';

    echo '<td>visited</td>';

    echo "</tr>";
    $notable++;
}

问题在于他们印有自己的桌子,并以这种方式返回了2张桌子。如何将它们连接在一起,所以我有1张桌子,并且根据自己的桌子有不同的Symbol。
谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用console.log(specificSearch([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ], 'even')); // the maximum number of even numbers is in row - 2, which are 2 and 8 console.log(specificSearch([ ['o', 'o', 'o', 'x'], ['x', 'x', 'o'], ['o', 'x'], ['x', 'x', 'x', 'x', 'x', 'x', 'x'] ], 'x')); // the maximum number of x is in column - 4, which is 7 times appear 组合两个查询。

function specificSearch(array, command) {

    var max = 0
    var even = 0
    for(var i = 0; i < array.length; i++){
      var evenCounter = 0
       for(var j = 0; j < array[i].length; j++){
          if(command === 'even'){
             if(array[i][j] % 2 == 0){
                evenCounter++
             }
          } 
       }

       if(command === 'even' ){
         if( max < evenCounter) {
           max = evenCounter
           even = i
         }
       }
    }
    return even
  }

然后,您可以使用UNION来了解是在最后两列中放置SELECT * FROM ( select 'complete' as which, mst_province.provinsi as provinsi, mst_kab.kabupaten as kabupaten, form_kuesioner_pengelola.namasite as nama, form_kuesioner_pengelola.idprov, form_kuesioner_pengelola.idkab from form_kuesioner_pengelola join form_kuesioner_surveyor on form_kuesioner_surveyor.namalokasi = form_kuesioner_pengelola.namasite join mst_province on mst_province.id_prov = form_kuesioner_pengelola.idprov join mst_kab on mst_kab.id_prov = form_kuesioner_pengelola.idprov and mst_kab.id_kab = form_kuesioner_pengelola.idkab group by form_kuesioner_pengelola.namasite UNION ALL select 'visited' as which, mst_province.provinsi as provinsi, mst_kab.kabupaten as kabupaten, form_kuesioner_pengelola.namasite as nama, form_kuesioner_pengelola.idprov, form_kuesioner_pengelola.idkab from form_kuesioner_pengelola join mst_province on mst_province.id_prov = form_kuesioner_pengelola.idprov join mst_kab on mst_kab.id_prov = form_kuesioner_pengelola.idprov and mst_kab.id_kab = form_kuesioner_pengelola.idkab group by form_kuesioner_pengelola.namasite ) AS u order by u.idprov, u.idkab 还是$row['which']

&#9989;

如果您只想返回一次所有内容,请使用&#10006;echo "<tr> <th>No.</th> <th>Provinsi</th> <th>Kabupaten</th> <th>Namasite</th> <th>Form Manfaat</th> <th>Form Pengelola</th> <th>Form Surveyor</th> <th>status</th>"; while($row = mysqli_fetch_array($rdata)) { echo "<tr>"; echo '<td>' . $no . '</td>'; echo '<td>' . $row['provinsi'] . '</td>'; echo '<td>' . $row['kabupaten'] . '</td>'; echo '<td>' . $row['nama'] . '</td>'; echo '<td>&#9989;</td>'; echo '<td>' . ($row['which'] == 'complete' ? '&#9989;' : '&#10006;') . '</td>'; echo '<td>' . ($row['which'] == 'complete' ? '&#9989;' : '&#10006;') . '</td>'; echo '<td>' . $row['which'] . '</td>'; echo "</tr>"; $no++; } (取决于它们是否在Complete表中),则应使用Visited那张桌子。然后,您可以测试表中的列是否为空,以了解是否存在匹配项。

form_kuesioner_surveyor