MySQL 5.5.32上的连接问题

时间:2015-02-05 14:47:40

标签: php mysql sql

大家早上好。 我在尝试查询工作时遇到了一些困难(之后在其上构建视图)

我的表结构是这样的(为简洁起见缩短了)

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的知识有限,我认为这还不足以实现这个目标

任何帮助都将不胜感激。

1 个答案:

答案 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;

SQL Fiddle