0

次の問題があります。これが私のテーブルの構造ですここに画像の説明を入力

ここに画像の説明を入力

ここに私のコードがあります:

            $SQL_NEXT_PROJECT_ID ="SELECT id  FROM projects WHERE id < '".$id_project."' and project_types_id='".$project_type_id."' ORDER BY id DESC LIMIT 1";
            $conn->query($SQL_NEXT_PROJECT_ID);
            foreach ($conn->query($SQL_NEXT_PROJECT_ID) as $rowProjectNext) {
                $next_project_id = $rowProjectNext['id'];
            }

            $SQL_PREVIOUS_PROJECT_ID ="SELECT id  FROM projects WHERE id > '".$id_project."' and project_types_id='".$project_type_id."' ORDER BY id ASC LIMIT 1";
            $conn->query($SQL_PREVIOUS_PROJECT_ID);
            foreach ($conn->query($SQL_PREVIOUS_PROJECT_ID) as $rowProjectPrevious) {
                $previous_project_id = $rowProjectPrevious['id'];
            }

問題は、「images」テーブルからの追加条件を使用してクエリを配置する必要があることです。メイン フィールド =「1」を評価する必要があります。内部結合を使用して実行しようとしましたが、うまくいかないようです。ここに私が試してきたクエリを添付します

$SQL_NEXT_PROJECT_ID ="SELECT projects.id  FROM projects INNER JOIN images WHERE projects.id > '".$id_project."' and project_types_id='1' and main='1' ORDER BY projects.id DESC LIMIT 1";

基本的に私がする必要があるのは、プロジェクトの現在のID($ id_project)に基づいて、特定のタイプ(project_types_id)のプロジェクトへの次/前のリンクを作成することです。 「1」に等しい

私が自分自身をよく説明したことを願っています...

4

2 に答える 2

0

最後に私はこのようにしました

$_nextPrevious = array();

            $SQL_SEARCH_VALUES="SELECT images.projects_id AS projectId FROM projects INNER JOIN images ON ( projects.id = images.projects_id ) AND project_types_id =  '".$project_type_id."' AND images.main =  '1' LIMIT 0 , 30";
            $conn->query($SQL_SEARCH_VALUES);
            foreach($conn->query($SQL_SEARCH_VALUES) as $rowNextPrevious) {
                $value = $rowNextPrevious['projectId'];                    
                array_push($_nextPrevious, $value);
            }


            $currentValue = array_search($id_project, $_nextPrevious);

            $next = $currentValue + 1;

            $previous = $currentValue - 1;

            $next_project_id = $_nextPrevious[$next];

            $previous_project_id = $_nextPrevious[$previous];

            return array($project_name,$project_description,$project_path, $_images, $next_project_id, $previous_project_id);

2 つの検索の代わりに配列を使用して...

于 2012-11-24T06:45:00.880 に答える
0

まあ、あなたは何にも参加していません...あなたにはON条項が必要です。

SELECT pr.id  FROM projects pr 
INNER JOIN images img ON (pr.id = img.projects_id AND img.main = 1)
WHERE pr.id > ? 
AND pr.project_types_id = 1 
ORDER BY pr.id DESC LIMIT 1
于 2012-11-19T22:10:56.040 に答える