Условие внутри SQL-запроса

Я хочу создать запрос, который будет показывать слово «Пройдено», если DATEDIFF (so_date, actual_delivery) = 3, а затем показывает «Сбой», если нет. Может кто-то помочь мне, пожалуйста?

<?php
$hostname="localhost";
$username="root";
$password="";
$db = "csl_otd";
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT so_date,
actual_delivery,
case when DATEDIFF(so_date, actual_delivery) = 3
then "Passed"else "Failed"end as status
FROM sales_order
LEFT JOIN dar ON sales_order.dar_numberr = dar.dar_number
WHERE DATEDIFF(so_date, actual_delivery) < 10') as $row) {
echo "<tr>";
echo "<td>" . $row['so_date'] . "</td>";
echo "<td>" . $row['actual_delivery'] . "</td>";
echo "<td>" . $row['DATEDIFF(so_date,actual_delivery)'] . "</td>";
echo "<td>" . $row['status'] . "</td>";
echo "</tr>";
}
?>
</tbody></table>

Выход

Date Difference  | Status
2                | Passed
4                | Failed

0

Решение

случай использования, когда

SELECT so_date,actual_delivery,
DATEDIFF(so_date,actual_delivery) Date_Difference,
case when  DATEDIFF(so_date,actual_delivery) = 3
then "Passed"else "Failed" end Status
FROM sales_order
LEFT JOIN dar
ON sales_order.dar_numberr=dar.dar_number
WHERE DATEDIFF(so_date,actual_delivery)<10

Или вы можете использовать, если вы использовали (но есть небольшая коррекция)

SELECT so_date,actual_delivery,DATEDIFF(so_date,actual_delivery),
if ( DATEDIFF(so_date,actual_delivery) = 3
,'Passed','Failed') status
FROM sales_order
LEFT JOIN dar
ON sales_order.dar_numberr=dar.dar_number
WHERE DATEDIFF(so_date,actual_delivery)<10
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector