2011-11-04 59 views
0

我正在开发一个php/mysql项目,但发现它很难前进。这是我的情况:PHP MySQL根据多个条件显示消息

我有两个表第1个“用户”,第2个是“消息”。表1包含用户标识,性别,年龄,城市和国家。第二个表包含messageid,消息,性别,minimum_age,maximum_age,城市和国家。

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

如果我给喜欢

========================================================================== 
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查询或最好的技术来完成这项任务。

回答

0
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 

类似的东西。

然后检查结果集,如果是空的,变化的查询选择的所有消息要做到这一点是在你的SQL查询中使用WHEREJOIN

+0

你想要table.field,而不是field.table。此外,JOIN可能更有效。 – fredden

+0

是的,真的修好了。那太蹩脚了。关于JOIN,我想说这取决于作者如何创建一个查询。有时我发现在表之间创建动态查询比较容易,除非存在性能问题。他也可以使用准备好的语句。 – paulus

+0

我有大约200,000个用户,并且每秒都在网站上访问,许多用户没有表格中指定的城市或国家或性别或年龄。我的意思是他们没有填写他们的档案。现在,如果你的查询会导致一个条件为空如何切换到下一个条件..什么是逻辑? – Adhaata

0

的一种方式。