【发布时间】:2011-08-20 20:10:19
【问题描述】:
MySQL (table1):
+----+--------+-------+--------+
| id | itemid | title | status |
+----+--------+-------+--------+
| 1 | 2 | title | 0 |
+----+--------+-------+--------+
| 2 | 2 | title | 1 |
+----+--------+-------+--------+
| 3 | 3 | title | 1 |
+----+--------+-------+--------+
| 4 | 3 | title | 0 |
+----+--------+-------+--------+
| 5 | 3 | title | 0 |
+----+--------+-------+--------+
MySQL(表 2):
+----+---+---+
| id | x | y |
+----+---+---+
| id | 1 | 2 |
+----+---+---+
PHP:
(我知道下面的查询没有意义,但它应该只是说明我在这里要做什么。)
$a = mysql_query("SELECT t1.title FROM table1 AS t1 WHERE t1.title = 'title' ...IF t1.status = 1 THEN (SELECT * FROM table2 AS t2 WHERE t2.x = '1' AND t2.y = t1.itemid) ORDER BY `id`");
while($b = mysql_fetch_assoc($a))
{
echo $b['title'];
}
所以,我想做的是:
1) 从table1 获取与title = title 匹配的所有行
2) 如果table1 中的status 等于0 什么都不做,只显示数据
3) 但是,如果table1 中的status 等于1,那么它应该检查table2 中是否有记录,其中x = 1 和y = itemid (from table1),如果没有来自table1 的数据应该是excluded
示例: 在上面的示例中,它应该显示 ids (table1): 1, 2, 4, 5 ...3 应该被排除,因为状态是 1,并且表 2 中没有匹配的记录。
我希望这是有道理的:/
【问题讨论】:
标签: php mysql select if-statement