基于四个表

时间:2015-10-18 13:50:02

标签: mysql database

我有以下五个表:

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)

我在users表中注册了4个用户,在year_month表中注册了3年,在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

会,结果与我想的不同。它只是向我展示这一年只有一次。

谁能指导我如何正确地做到这一点?!! 谢谢,

1 个答案:

答案 0 :(得分:0)

从year_month表开始,然后将所有其他表连接起来。只要使用普通的内连接,就有可能在没有匹配项的情况下抑制某些日期值。