PHP MySQL根据多种条件显示消息

PHP MySQL根据多种条件显示消息,php,mysql,Php,Mysql,我正在用php/mysql进行一个项目,但发现很难继续。我的情况如下: 我有两个表,第一个是用户,第二个是消息。表1包含用户ID、性别、年龄、城市和国家。第二个表包含消息ID、消息、性别、最小年龄、最大年龄、城市和国家 现在,我想要实现的是向遵循消息表中所有条件的用户显示特定消息。例如: 如果我在消息表中给出如下条件 ========================================================================== messageid || me

我正在用php/mysql进行一个项目,但发现很难继续。我的情况如下:

我有两个表,第一个是用户,第二个是消息。表1包含用户ID、性别、年龄、城市和国家。第二个表包含消息ID、消息、性别、最小年龄、最大年龄、城市和国家

现在,我想要实现的是向遵循消息表中所有条件的用户显示特定消息。例如:

如果我在消息表中给出如下条件

==========================================================================
messageid || message    || gender || minimum_age || maximum_age || city || country

1            Messages 1    male      20             30             london  UK
2            Messages 2    female    ANY            40             gurgaon IN
我的年龄是24岁,性别是男性,城市是伦敦,国家是英国。然后我将在第页上看到消息1。如果所有条件都不匹配,那么我将看到任何消息

注意:有些用户在用户数据库中没有年龄、城市、国家或性别

我需要mysql查询方面的帮助或最好的技术来完成这项任务

SELECT u.userid, u.gender, u.age, u.city, u.country, m.messageid,
   m.minimum_age, m.maximum_age, m.city, m.country 
FROM users u, message m 
WHERE u.gender = m.gender and u.age between m.minimum_age and m.maximum_age 
     and u.city = m.city and u.country = m.country
差不多吧


然后检查resultset,如果为空,则更改查询以选择所有消息。执行此操作的一种方法是在SQL查询中使用和

您需要的是table.field,而不是field.table。此外,连接可能更有效。是的,正确的修正。那有点蹩脚。关于连接,我认为这取决于作者如何创建查询。有时,我发现在不涉及连接的情况下在表之间创建动态查询更容易,除非存在性能问题。他也可以使用事先准备好的声明。我有大约200000名用户,每秒访问一次网站,许多用户并没有在表中指定城市或国家、性别或年龄。我是说他们还没有填写个人资料。现在,如果一个条件的查询结果为空,那么如何切换到下一个条件。逻辑是什么?如果其中一个条件为假,预期的结果集是什么?您是否应该显示消息?