我有3张桌子; EVENTS
以及USER
和USER_HAS_EVENT
。
EVENTS : idEvents - name
USER:idUser - 名称
USER_HAS_EVENT : idUser - idEvent
我想从事件表中选择所有事件并创建有条件字段(ex.name表示新动态字段=预先注释),如果存在USER_HAS_EVENT
中单个事件的记录,则为Y或N UserId
。
userid是从php动态查询中发送的,是查询中的参数。
抱歉英语不好。
提前感谢。
答案 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应该是代码中的参数。