我正在尝试一种特殊的显示方式。现在运行的查询可以工作并获得我想要的结果,但是结果非常慢。我知道这是使用循环并在其中包含第二个查询的结果。 第二个查询需要数组中的第一个查询的ID。 该数组用于循环,然后由第二个查询使用。有没有一种方法可以因为for循环而无需多次执行第二个查询。
$sql = "SELECT DISTINCT CO.CursusID, DATE(CO.DatumBegin) AS Datum
FROM cursusonderdelen CO
LEFT JOIN psentity P ON CO.CursusID = P.psid
INNER JOIN opleidingonderdelen OP ON CO.OnderdeelID = OP.OnderdeelID
INNER JOIN opleidingen O on OP.OpleidingID = O.OpleidingID
WHERE P.deleted = 0 AND YEAR(CO.DatumBegin) = $year AND MONTH(CO.DatumBegin) = $month $where
ORDER BY CO.DatumBegin";
$CursusID = 28115;
$result = mysqli_query($conn, $sql);
$datas = array();
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$datas[] = $row;
}
$CID = array_column($datas, 'CursusID');
print_r($CID);
for($i = 0; $i <= 200; $i++ ){
if ($CID[$i] > 0) {
$CursusID = $CID[$i];
}
if(isset($_SESSION['zoek'])){
$zoek = $_SESSION['zoek'];
}else{
$zoek = '';
}
$sql2 = "
SELECT C.CursusID, CB.BedrijfID, CO.CursusOnderdeelID, OP.Opleidingnaam, O.onderdeelnaam, CO.DatumBegin as datum, CO.DatumEind, CODD.Docent, CODA.Assistent,
CASE WHEN CB.BedrijfID > 0 THEN B.accountname ELSE 'Geen bedrijf' END AS Bedrijf,
CASE WHEN Aantal > 0 THEN Aantal ELSE '0' END AS Aantal, CASE WHEN COL.LocatieID > 0 THEN L.Locatienaam WHEN COL.BedrijfID > 0 THEN B.accountname ELSE 'Geen locatie' END AS Cursuslocatie,
CASE WHEN CB.BedrijfID > 0 THEN B.accountname ELSE 'Geen bedrijf' END AS Bedrijf, CASE WHEN COL.LocatieID > 0 THEN L.Woonplaats WHEN COL.BedrijfID > 0 THEN BS.ship_city ELSE 'Geen locatie' END AS Lesplaats,
ED.Lunch, ED.Subsidie,ED.Exameninstantie, ED.Certificaten, ED.Gefactureerd, ED.Uitnodigingen, ED.Lesmateriaal, ED.Praktijkmateriaal, ED.Certificatendatum, ED.bedrag, ED.Overnachting
FROM cursussen C
LEFT JOIN cursusbedrijven CB ON C.CursusID = CB.CursusID
LEFT JOIN vtigercrm600.vtiger_account B ON CB.BedrijfID = B.accountid
LEFT JOIN vtigercrm600.vtiger_accountshipads BS ON B.accountid = BS.accountaddressid
LEFT JOIN opleidingen OP ON C.OpleidingID = OP.OpleidingID
LEFT JOIN cursusonderdelen CO ON C.CursusID = CO.CursusID
LEFT JOIN cursusonderdeellocaties COL ON CO.CursusOnderdeelID = COL.CursusOnderdeelID
LEFT JOIN onderdelen O ON CO.onderdeelID = O.onderdeelID
LEFT JOIN locaties L ON COL.LocatieID = L.LocatieID
LEFT JOIN (SELECT CC.BedrijfID, COC.CursusOnderdeelID, COUNT(COC.CursistID) AS Aantal FROM cursusonderdeelcursisten COC
LEFT JOIN cursuscursisten CC ON COC.CursusID = CC.CursusID AND COC.CursistID = CC.CursistID
GROUP BY COC.CursusOnderdeelID, CC.BedrijfID) COC ON CO.CursusOnderdeelID = COC.CursusOnderdeelID AND CB.BedrijfID = COC.BedrijfID
LEFT JOIN (SELECT COD.CursusOnderdeelID, GROUP_CONCAT(' ', CONCAT(D.Voornaam, ' ', D.Achternaam)) AS Docent
FROM cursusonderdeeldocenten COD
LEFT JOIN docenten D ON COD.DocentID = D.DocentID WHERE COD.Docent = 1 GROUP BY COD.CursusOnderdeelID) CODD ON CO.CursusOnderdeelID = CODD.CursusOnderdeelID
LEFT JOIN (SELECT COD.CursusOnderdeelID, GROUP_CONCAT(' ', CONCAT(D.Voornaam, ' ', D.Achternaam)) AS Assistent
FROM cursusonderdeeldocenten COD LEFT JOIN docenten D ON COD.DocentID = D.DocentID WHERE COD.Assistent = 1 GROUP BY COD.CursusOnderdeelID) CODA ON CO.CursusOnderdeelID = CODA.CursusOnderdeelID
LEFT JOIN extradata ED ON C.CursusID = ED.CursusID AND CO.CursusOnderdeelID = ED.CursusonderdeelID
LEFT JOIN psentity P ON C.CursusID = P.psid
WHERE P.deleted = 0
AND C.CursusID = $CursusID
ORDER BY date(CO.DatumBegin), CO.CursusOnderdeelID";
// echo $sql2;
$result2 = mysqli_query($conn, $sql2);
$datas2 = array();
while ($row = mysqli_fetch_assoc($result2)) {
$datas2[] = $row;
$opleiding = $row['Opleidingnaam'];
}
echo "<tr>
<td id='opleiding' colspan='100%'>" . $opleiding . "</td>
</tr>";
foreach ($datas2 as $data2) {
$cursusid = $data2['CursusID'];
$coid = $data2['CursusOnderdeelID'];
$bedrijfid = $data2['BedrijfID'];
if ($data2['Certificatendatum'] = '1900-01-01'){
$data2['Certificatendatum'] = '';
}
if($data2['Certificatendatum'] != '') {
$newDate = date("d-m-Y", strtotime($data2['Certificatendatum']));
$data2['Certificaten'] = $data2['Certificaten'] . '<br>' . $newDate;
}
if($data2['bedrag'] != '') {
$data2['Gefactureerd'] = $data2['Gefactureerd'] . '<br>€' . $data2['bedrag'];
}
include 'index.indicatie.php';
$data2['cursusdatum'] = date('d-m-Y', strtotime($data2['datum'])) . '</br>' . date('H:i', strtotime($data2['datum'])) . ' - ' . date('H:i', strtotime($data2['DatumEind']));
echo "<tr class='view_data' onclick='modalFucntion(" . $cursusid . "," . $coid . ", " . $bedrijfid . ")' >";
for ($count = 0; $count < $acount; $count++) {
$info = $veldnaam[$count];
echo "<td id='" . $veldid[$count] . $bedrijfid . $coid . "' bgcolor='" . $bgcolor . "' style=''>" . $data2[$info] . "</td>";
}
echo "</tr>";
}
}
}
echo '</table>';