我的表结构是这样的(为简洁起见缩短了)
SUBS:code,mag,start,end
用户:代码,电子邮件
问题:mag,issue,pubdate
"潜艇"包含对杂志的订阅:CODE是公司代码,MAG是mag的标识符,START和END是订阅有效的日期。
"用户"包含与公司代码相关的电子邮件(1 / N)
"问题"每个杂志的每期杂志清单及其出版日期
示例数据
This Fiddle应该为您提供一些示例数据。这是一个带有示例数据
的create语句的pastebin 我想要实现的目标
对于每个用户,他/她有权获得所有订阅,包括起始问题和结束问题。使用列名称:
USERS.email,ISSUES.mag,SUBS.start,ISSUES.issue,SUBS.end,ISSUES.issue
对于我提供的样本数据,这应该是:
输入johndoe @ mail.com,01ARS,2014-01-01,01ARS14000387,2014-03-01,01ARS14000389
我有多远
SELECT users.email, subs.mag, subs.start, subs.end
FROM users
LEFT JOIN subs ON users.code = subs.code
我无法获取start_issue和end_issue的当前值 虽然有限,但我对sql的知识有限,我认为这还不足以实现这个目标
任何帮助都将不胜感激。
答案 0 :(得分:1)
<强> EDITED 强>
试试这个:
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;