Какой лучший способ сделать запрос один-ко-многим в MySQL?Это упрощенная версия базы данных, над которой я работаю (если что-то выглядит неправильно, скажите мне):
CREATE TABLE Tenant(
tenant_id int NOT NULL,
first_name varchar(20),
last_name varchar(20),
PRIMARY KEY (tenant_id)
);
CREATE TABLE Rent(
tenant_id int NOT NULL,
month enum('JAN', 'FEB', ...),
date_paid date NOT NULL,
amount_paid int NOT NULL,
FOREIGN KEY (tenant_id) REFERENCES Tenant(tenant_id)
);
(Причина, по которой в таблице Rent есть месяц и date_paid, заключается в том, что арендаторне обязательно платить арендную плату все сразу).То, что я хочу, чтобы имя арендатора появилось один раз, и это будет просто левое соединение, но я хочу, чтобы вся сумма, выплаченная за определенный месяц, была указана в столбцах для каждого арендатора, я не уверен, как это сделать.Я не совсем уверен, как это сделать, так как вы имеете дело с неизвестным количеством столбцов, еще не коснулись этого в MySQL.Или есть лучшая стратегия?Кроме того, как бы я мог создать свою собственную переменную, такую как MONTH-YEAR (я не думаю, что она существует как собственная переменная в MySQL).Спасибо!
Редактировать: просто чтобы еще больше упростить его, я использую этот формат:
<br>
create table rent(<br>
tenant_id int not null,<br>
year year,<br>
amount_paid int,<br>
foreign key (tenant_id) references tenant(tenant_id)<br>
);<br>
Если я понимаю, что сказал duffymo ниже, я должен использовать group by (я знаю, что где-то неправильно понимаюпотому что он показывает только первый пример для каждого года): <br>
SELECT Tenant.first_name, Rent.year, Rent.amount_paid<br>
FROM Tenant<br>
LEFT JOIN Rent<br>
ON Tenant.tenant_id = Rent.tenant_id<br>
GROUP BY year;<br>
Вот как я хочу, чтобы запрос выглядел, число под каждым годом - это выплаченная сумма (на самом деле я только что понял, что это немногоболее сложный, чем то, что я объяснил):
имя_сервера 2009 2008 2007
Джон 500 500 NULL
Ann 1000 NULL NULL
Боб NULL 700 700