#sql
Вопрос:
У меня есть две таблицы, и я хотел бы сделать запрос, чтобы посмотреть все компании из БД, и если есть задачи с тем же company_code показывают только самые актуальные на сегодняшний день(сегодня), в случае, если компанией не стоит задача показать информацию о компании и «нет задач».
Компании (первая таблица) идентификатор, код компании, Имя, Телефон, Электронная почта, Веб-сайт
Задачи (вторая таблица) идентификатор, код компании, комментарий, дата,
мой текущий код:
$date = date('Y-m-d H:i:s');
$sql = "
SELECT *
FROM companies LEFT JOIN
(SELECT comment, company_code FROM tasks ORDER BY date DESC WHERE date >= $date) tasks
ON companies.company_code = tasks.company_code
GROUP BY companies.company_code;";
Заранее благодарю вас!
Комментарии:
1. Примеры данных, желаемые результаты и соответствующий тег базы данных-все это поможет.
2. Чтобы ваш конечный результат был упорядочен, вы должны поместить
ORDER BY
его на самый внешний уровень, т. е. послеGROUP BY
.
Ответ №1:
Если я правильно понимаю:
SELECT c.*, COALESCE(t.comment, 'No task')
FROM companies c LEFT JOIN
tasks t
ON t.company_code = c.company_code AND
t.date >= $date;