【问题标题】:$wpdb->get_results with UNIONs in query$wpdb->get_results 在查询中带有 UNION
【发布时间】:2012-08-08 09:32:32
【问题描述】:

当单独运行以下每个 SELECT 时(没有 UNION),我得到了预期的结果。使用 UNION 时我没有得到任何结果。

任何想法为什么这不起作用?

$query = "
 (SELECT * FROM projects WHERE public='1')
 UNION
 (SELECT * FROM projects JOIN project_region ON projects.id_project = project_region.id_project 
 JOIN user ON user.id_region = project_region.id_region WHERE user.user_id = {$current_user->ID})
 UNION
 (SELECT * FROM projects JOIN project_user ON projects.id_project = project_user.id_project
 WHERE project_user.user_id = {$current_user->ID})
";

$projects = $wpdb->get_results($query);

if ($projects) {
   foreach ($projects as $project) {
      // output results
   }
}

【问题讨论】:

    标签: sql wordpress union


    【解决方案1】:

    UNION 中,您需要为每个联合查询提供相同的列号和列名。因此,在第一个查询中,您有来自项目表的列,但在第二个查询中,您有来自项目、project_region 和用户表的列。

    【讨论】:

    • 感谢您的回复,但问题是 MySQL 错误“字段列表中的列 'id_project' 不明确”。请参阅下面的答案。
    • xto 的答案是正确的答案。 joko13 你的答案是 xto 解释的结果...
    【解决方案2】:

    MYSQL 错误是 *字段列表中的列 'id_project' 不明确*

    所以工作查询如下所示:

    $query = "
    (SELECT id_project, name FROM projects WHERE public='1')
    UNION
    (SELECT projects.id_project, projects.name FROM projects JOIN project_region ON projects.id_project = project_region.id_project 
    JOIN user ON user.id_region = project_region.id_region WHERE user.user_id = {$current_user->ID})
    UNION
    (SELECT projects.id_project, projects.name FROM projects JOIN project_user ON projects.id_project = project_user.id_project
    WHERE project_user.user_id = {$current_user->ID})
    ";
    

    我在这里找到了解决方案: http://sqlzoo.net/howto/source/z.dir/err918/mysql

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 2012-11-17
      相关资源
      最近更新 更多