У моего клиента есть база данных, а внутри - 5 таблиц, прямо сейчас без связи, только дата в каждой таблице. Я знаю, что это может быть невозможно, но моему клиенту нужен отчет с информацией в этих таблицах. Ему нужно присоединиться к строке profession
, которая сейчас находится в 4 из 5 таблиц с amount
и userId
в последней, все это с between
датами. Поэтому я попытался INNER JOIN
редактировать все таблицы и в предложении ON
установить связь со строкой date
.
Вот ТАБЛИЦЫ:
---DATES---
userId ---- Int
username -- varchar 150
amount ---- Float(5,2)
date ------ DATETIME
--- TABLE1, TABLE2, TABLE3, TABLE4 --- (same rows for different parts in the program)(have more rows than those)
profession --- varchar 100
date -------- DATETIME
userId ------ Int
Я сделал этот тип INNER JOIN
, но сейчас не отображается ни одного ответа, без какой-либо ошибки в консоли. поэтому я не знаю, есть ли другая форма для этого, чтобы показать мне информацию, которая нужна клиенту:
<?php
$fromdate = filter_var($_POST["fromdate"], FILTER_SANITIZE_STRING);
$todate = filter_var($_POST["todate"], FILTER_SANITIZE_STRING);
try{
$sql = $conn->prepare("SELECT DATE_FORMAT(C.date, '%d de %M de %Y') AS date,
C.userId, C.username, C.amount, (D.profession) AS diag1, (DN.profession) AS diag2,
(X.professions) AS diag3, (DJ.profession) AS diag4 FROM DATES C,
INNER JOIN DIAGNOSTICO D
INNER JOIN DIAGNOSTICON DN
INNER JOIN CONSULTA X
INNER JOIN DIAGNOSTICOJUR DJ
ON DATE_FORMAT(C.date, '%Y-%m-%d') = DATE_FORMAT(D.date, '%Y-%m-%d')
AND DATE_FORMAT(C.date, '%Y-%m-%d') = DATE_FORMAT(DN.date, '%Y-%m-%d')
AND DATE_FORMAT(C.date, '%Y-%m-%d') = DATE_FORMAT(X.date, '%Y-%m-%d')
AND DATE_FORMAT(C.date, '%Y-%m-%d') = DATE_FORMAT(DJ.date, '%Y-%m-%d')
WHERE C.date BETWEEN '".$fromdate."' AND '".$todate."' ORDER BY C.date ASC");
$sql->execute();
while($row = $sql->fetch(PDO::FETCH_ASSOC)) {
?>
<tr>
<td><?php echo $row["date"]; ?></td>
<td class="center"><?php echo $row["userId"]; ?></td>
<td class="center"><?php echo $row["username"]; ?></td>
<td class="center"><?php echo $row["amount"]; ?></td>
<td class="center">
<?php echo $row["diag1"].''.$row["diag2"].''.$row["diag3"].''.$row["diag4"]; ?>'
</td> //
</tr>
<?php } ?>
Я пытался использовать строку даты, потому что клиент сохраняет только один раз amount
в таблице DATES
. В тот же день он (клиент) сохранил в ряду профессий только один раз, в какой таблице? это зависит от того, что клиент сделал с пользователем. (Программа имеет несколько форм)