大家早上好。
我在尝试让查询工作时遇到了一些困难(以便在以后对此建立一个视图)
我的桌子结构是这样的(为了简洁而缩短)
副词:代码,mag,start,end
用户:代码、电子邮件
发行:杂志,发行,出版日期
“subs”包含对杂志的订阅:CODE是公司代码,MAG是MAG的标识符,START和END是订阅有效的日期。
“用户”包含与公司代码关联的电子邮件(1/N)
“期刊”是一份每期杂志的清单,上面有出版日期
样本数据
This Fiddle应该会提供一些样本数据。下面是一个pastebin和带有示例数据的create语句
我想达到的目标
对于每个用户,他/她有权获得的所有订阅,包括开始发布和结束发布。用列名说话:
用户.email,ISSUES.mag,SUBS.start,ISSUES.issue,SUBS.end,ISSUES.issue
对于我提供的示例数据,应该是:
[email protected],01ARS,2014-01-01,01ars140003872014-03-01,01ARS14000389
到目前为止我所拥有的
SELECT users.email, subs.mag, subs.start, subs.end
FROM users
LEFT JOIN subs ON users.code = subs.code
我无法获取开始问题和结束问题的当前值
我对sql的了解虽然有限,但我想这还不够
任何帮助都将不胜感激。
最佳答案
编辑
试试这个:
SELECT t1.email, t3.mag, t2.start, t3.issue s, t2.end, t4.issue e
FROM users t1
JOIN subs t2 ON t1.code = t2.code
JOIN issues t3 ON t2.mag = t3.mag AND t2.start = t3.pubdate
JOIN issues t4 ON t2.mag = t4.mag AND t2.end = t4.pubdate;
SQL Fiddle