如何从另一个表中检查状态时从一个表中选择某些内容?

时间:2011-12-07 10:26:57

标签: mysql

我在数据库中有两个表:

comments table                  users table
| u_id | text |                 | u_id | premium |
|   9  |  ..  |                 |   9  |    1    |
|  10  |  ..  |                 |  10  |    0    |
|   9  |  ..  |

我想从用户的评论表中选择文本,以防该用户具有高级状态(1)。但是,如果我想检查这个用户的状态,我需要做另一个mysql查询。这可以在一个查询中检查吗?

$premium=sql_select("SELECT premium FROM users WHERE u_id LIKE '".$_GET['u_id']."'");

if ($premium[1][0]=1) {
$text=mysql_query("SELECT text FROM comments WHERE u_id LIKE '".$_GET['u_id']."'");
}
else //this user has no premium account so text will not be selected.

2 个答案:

答案 0 :(得分:1)

以下查询加入表并获取所有具有溢价1的用户。

SELECT c.u_id, c.text FROM comments_table as c 
LEFT JOIN ON users_table as u ON u.u_id = c.u_id
WHERE u.premium = 1

答案 1 :(得分:0)

使用(内部)联接:

SELECT text
FROM comments_table c 
JOIN users_table u ON u.u_id = c.u_id AND u.premium = 1
WHERE c.u_id = ?