MySQL 查询有任何问题吗?

标签 mysql drupal

我有一个数据库,在 Drupal 安装中托管几个表。其中一张 table 用于事件,另一张 table 用于场所。我让用户创建地点,然后添加可以在这些地点完成的事件,创建事件后,如果您是该事件的所有者,则可以对其进行编辑。所以,我有这样的疑问:

$activ = db_query("SELECT a.aid, a.name, a.picture, a.data, a.time, p.name as place_name FROM activities a, places p WHERE p.pid = ANY (SELECT pla.pid FROM places pla WHERE pla.uid = :uid) ORDER BY a.activity_date ASC", array(':uid' => $user->uid));

据我了解,这将列出登录用户已创建并因此拥有的事件,但是,如果用户创建了多个事件,则登录用户可以查看其他人的事件并对其进行编辑。我认为问题可能出在查询的任何部分,但我无法找出问题所在。有什么想法吗?

最佳答案

我猜测事件表有“pid”列(地点 id):

$activ = db_query(
"SELECT a.aid, a.name, 
a.picture, a.data, 
a.time, p.name as place_name 
FROM activities a 
LEFT JOIN places p USING(pid) 
WHERE pla.uid = :uid 
ORDER BY a.activity_date ASC", 
array(':uid' => $user->uid));

关于MySQL 查询有任何问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726017/

相关文章:

android - 带有 Drupal 服务的移动应用程序

mysql - 需要有关构建或标准化我的 MySQL 数据的建议

php - 每隔一定时间用从 mysql 检索到的数据刷新 ListView

mysql - 如何在 mySQL 中进行简单的 SQL 请求?

javascript - jCarousel 仅当鼠标悬停在容器上时才显示箭头

php - 错误 : php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution (0) (Acquia Connector login for drupal)

drupal - 如何在 Drupal 中覆盖表单操作?

php - MySQL 中的货币格式

MySQL 错误 : SQLSTATE[42000]: Syntax error or access violation: 1248 Every derived table must have its own alias

php - 干净的 URL 测试失败 D7