я следующие пять таблиц:нескольких объединений на основе четырех таблиц
users(user_id(pk),username)
year_month(id(pk),year_id(FK),month_id(FK))
monthly_payment(id(pk), username, amount, year_month_id(fk),user_id(fk))
years(year_id(pk),year)
month(month_id(pk),month_name)
Я 4 зарегистрированных пользователей в users
таблице, 3-х лет в year_month
таблице и некоторые записи в monthly_payment
таблицы (которые хранят сумму каждый пользователь заплатил ежемесячно).
Я пробовал много, чтобы сделать запрос, получить все года с месяцами для каждого пользователя, и показать для каждого пользователя, если amount
поля в таблице monthly_payment
устанавливаются с номером или он по-прежнему пуст.
это запрос я сделал:
select ym.id, ym.year_id,y.year, m.month_name, ym.month_id, mp.amount, u.user_id, u.username, u.`first_name`, u.`last_name`
from `users` as u
left join monthly_payment as mp using(user_id)
right join `year_month` as ym on(ym.id = mp.`year_month_id`)
inner join `years` as y on(y.year_id = ym.year_id)
inner join `month` as m on(m.month_id = ym.month_id)
where mp.year_month_id is null or mp.year_month_id is not null
будет, результат отличается, чем я думал. это просто покажет мне годы только один раз.
Может ли кто-нибудь вести меня, как это сделать правильно? !! и спасибо,
Можете ли вы подготовить образец данных [SQLFiddle] (http://sqlfiddle.com)? –
Возможно, избавиться от таблицы лет, таблицы месяцев и таблицы year_month. – Strawberry
@Strawberry, я пытался это сделать, все еще не работал. Спасибо! – bakursait