2017-06-01 1 views
0

私はこのクエリ文を持っている:ここでMySQLのこのクエリでWHERE文を追加できますか?

*私はが、私はそう

をhome_cfg_idすべてのゲームサーバモジュールを選択する必要がありそうNATURAL JOIN %1$sremote_serversライン

を無視
$template = 'SELECT %1$sserver_homes.*, 
     FROM %1$sserver_homes 
     NATURAL JOIN %1$sremote_servers 
     NATURAL JOIN %1$sconfig_homes 
     LEFT JOIN %1$sgame_mods 
      NATURAL JOIN %1$sconfig_mods 
      ON %1$sserver_homes.home_id=%1$sgame_mods.home_id 
     LEFT JOIN %1$shome_ip_ports 
      NATURAL JOIN %1$sremote_server_ips 
      ON %1$sserver_homes.home_id=%1$shome_ip_ports.home_id 
     WHERE `force_mod_id` IN 
     (
      SELECT `force_mod_id` 
      FROM `%1$shome_ip_ports` 
      WHERE `force_mod_id` = %1$sgame_mods.mod_id OR %1$shome_ip_ports.force_mod_id = 0 
     ) 
     OR %1$shome_ip_ports.force_mod_id IS NULL LIMIT '.$gethome_page_forlimit.','.$home_limit.';'; 

このポストを作るために、クエリからのいくつかのコードをカットWHERE文を追加する必要があります。

WHERE `home_cfg_id` IN 
(
SELECT `home_cfg_id` 
FROM `%1$sserver_homes` 
WHERE `home_cfg_id` = '.$home_cfg_id.' 
) 
+1

注意は、あなたが私を意味 – Strawberry

答えて

0

あなたの最後のWHERE節にあります。 OR文のまわりに()を置くことを忘れないでください。したがって、WHERE句は次のようになります。

WHERE [table].home_cfg_id = [your condition] 
    AND (force_mod_id IN ([your select statment]) 
     OR %1$shome_ip_ports.force_mod_id IS NULL) 

これが正しいパスに表示されることを願っています。

----- UPDATE ----このような 何か(あなたが必要なコードに[]を変更してください):ORDER BYなしLIMIT

$template = 'SELECT %1$sserver_homes.*, 
        FROM %1$sserver_homes 
        NATURAL JOIN %1$sremote_servers 
        NATURAL JOIN %1$sconfig_homes 
        LEFT JOIN %1$sgame_mods 
         NATURAL JOIN %1$sconfig_mods 
         ON %1$sserver_homes.home_id=%1$sgame_mods.home_id 
        LEFT JOIN %1$shome_ip_ports 
         NATURAL JOIN %1$sremote_server_ips 
         ON %1$sserver_homes.home_id=%1$shome_ip_ports.home_id 
        WHERE `force_mod_id` IN 
        (
         SELECT `force_mod_id` 
         FROM `%1$shome_ip_ports` 
         WHERE [table].home_cfg_id [your operation, = or like] [your condition] AND (`force_mod_id` = %1$sgame_mods.mod_id OR %1$shome_ip_ports.force_mod_id = 0 
        ) 
        OR %1$shome_ip_ports.force_mod_id IS NULL) LIMIT '.$gethome_page_forlimit.','.$home_limit.'; 
+0

かなり無意味です最後の行の前にWHERE文を追加しますか? –

関連する問題