1

次の各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
   }
}
4

2 に答える 2

1

これUNIONと同じ列番号、各ユニオンクエリの列名が必要です。したがって、最初のクエリにはプロジェクトテーブルの列がありますが、2番目のクエリにはプロジェクト、project_region、およびユーザーテーブルの列があります。

于 2012-08-08T10:05:54.900 に答える
0

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-08-08T10:19:01.147 に答える