查询混淆创建查询而不创建视图

时间:2013-12-04 00:41:27

标签: mysql sql database

这是一个问题 我们有3个数据库变量(Person,event,invite)

Person(pid,passwd,fname,lname), 
Event(eid, start_time,duration,description,pid)
Invited(pid,eid,response,visibility)

我想做一个女巫会做的查询 向所有人展示用户X创建的每个事件。

例如,Person David使用eid = 1和3创建事件。(2个事件) 如果Jany和Will邀请参加eid = 1,Mike邀请参加活动3 它应该显示

EID PID
1   Jany
1   will
3   mike  

我困惑的部分是人和事件的PID是事件的创造者 邀请的PID是邀请的人。所以它的PID值不同。 所以我不能自然地加入他们

我可以用create view mysql命令解决这个问题,但我正在编写这段代码 在PHP表单上,所以我想在一个命令中完成此命令。

我试过的是这个

select *
from invited
where  eid
in (SELECT eid
from person natural join event
where pid = 'DD')

但它没有给出我的预期。

如何在没有'create view'命令的情况下在One命令中编写代码来解决这个问题?

1 个答案:

答案 0 :(得分:0)

你在找这个吗?

SELECT e.eid, i.pid, p.fname
  FROM event e JOIN invited i
    ON e.eid = i.eid JOIN person p
    ON i.pid = p.pid
 WHERE e.pid = ?

示例输出:

| EID | PID | FNAME |
|-----|-----|-------|
|   1 |   2 |  Jany |
|   1 |   3 |  Will |
|   3 |   4 |  Mike |

这是 SQLFiddle 演示

推荐阅读