MYSQL查询使用join two table创建字段Y o N.

时间:2014-02-02 17:04:15

标签: mysql sql

我有3张桌子; EVENTS以及USERUSER_HAS_EVENT

EVENTS : idEvents - name 

Event Table     USER:idUser - 名称 User Table

USER_HAS_EVENT : idUser - idEvent

user_has_event table

我想从事件表中选择所有事件并创建有条件字段(ex.name表示新动态字段=预先注释),如果存在USER_HAS_EVENT中单个事件的记录,则为Y或N UserId

Example and expected result Example Result

userid是从php动态查询中发送的,是查询中的参数。

抱歉英语不好。

提前感谢。

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现这一目标。由于您在示例中提供了不同的表名和列名,因此可能无法直接使用我的建议。

如果你想要给定用户有或没有预约的所有事件,我宁愿选择左连接,假设用户只能预约一次事件。按构造进行子选择,联合或分组是其他选择。

MySQL(http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_isnull)中的isnull函数在您的示例中导致1或0而不是Y或N.我实际上无法测试它,但它可能会完成这项工作:

select
    e.id,
    e.name,
    isnull(r.user_id) as 'reserved'
from
    event e left join reservation r on e.id = r.event_id
where
    r.user_id = 56
or
    r.user_id is null

where子句中的第一个表达式限制给我们的给定用户,第二个表达式确保将返回此用户(或任何)未保留的事件。当然,user_id应该是代码中的参数。