rails3初心者のための複数絞込検索の実装方法

このQ&Aのポイント
  • 絞り込み条件で、メーカーやカテゴリを選択してから金額指定があれば、金額指定も含めて検索結果を実装することはできますか?また、ボタンは1個にする形にしたいです。
  • rails3初心者のための絞り込み検索方法をご紹介します。メーカーやカテゴリを選択し、金額指定があればそれも含めて検索結果を表示することができます。また、ボタンを1個にまとめることも可能です。
  • rails3初心者の方向けの絞り込み検索の実装方法をご紹介します。メーカーやカテゴリを選択してから金額指定がある場合、それも含めて検索結果を表示することができます。また、ボタンを1個にまとめることで、操作性を向上させることもできます。
回答を見る
  • ベストアンサー

rails3初心者 複数の絞込検索

絞り込み条件で、メーカーやカテゴリを選択してから 金額指定があれば、金額指定も含めて検索結果を実装する事はできますか? またボタンは1個にする形にしたいです。 よろしくお願い致しますm(_ _)m 絞込み検索内容 ========== ・メーカー (チェックボックス式) ・カテゴリ (チェックボックス式) ・金額指定 ========== ==================== views: ==================== <p>条件検索(複数選択可)</p> <%= form_tag ({:controller => :products, :action => :check }), {:method => :get} do %> <p>メーカーから探す</p> <% Maker.all.each do |maker|%> <%= check_box_tag "maker_id[]", maker.id, (params[:maker_id].include?(maker.id.to_s) if params[:maker_id]) %> <%= maker.maker_name %><br /> <% end %> <p>カテゴリから探す</p> <% Category.all.each do |c| %> <%= check_box_tag "category_id[]", c.id, (params[:category_id].include?(c.id.to_s) if params[:category_id]) %> <%= c.name %><br /> <% end %><br /> <%= submit_tag "検索"%> #このボタンを外してひとつのボタンにしたいです。 <% end %> <p>金額を指定して絞り込む</p> <%= form_tag ({:controller => :products, :action => :search_price }), {:method => :post} do %>  <%= text_field_tag "price1",(params[:price1] if params[:price1]) %> ~   <%= text_field_tag "price2",(params[:price2] if params[:price2]) %> <%= submit_tag "検索"%> <% end %> ==================== products_controller.rb ==================== def check @product = Product.all if params[:maker_id] && params[:category_id]   # 両方選択された場合 @products = Product.where(:category_id => params[:category_id], :maker_id => params[:maker_id] ) elsif params[:maker_id]   #makerが選択された場合 @products = Product.where(:maker_id => params[:maker_id]) if params[:maker_id] elsif params[:category_id]   #カテゴリが選択された場合 @products = Product.where(:category_id => params[:category_id]) if params[:category_id] elsif params[:maker_id] == nil && params[:category_id] == nil   #両方ともチェックがなかった場合 @products = Product.all end render :action => 'check' end def search_price @products = Product.where('price >=? AND price <=?', params[:price1],params[:price2]) @products = Product.where('price >=?', params[:price1]) if params[:price2].blank? @products = Product.where('price <=?', params[:price2]) if params[:price1].blank? render :action => 'index' end ややこしくてすみません^^; どうぞよろしくお願い致します。

  • _rin
  • お礼率71% (25/35)
  • Ruby
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

view側のボタンを1つにまとめます。 ================================================= <%= form_tag({:controller => :products, :action =>:search_price }) do %> <p>メーカーから探す</p> <% Maker.all.each do |maker|%> <%= check_box_tag "maker_id[]", maker.id %> <%= maker.maker_name %><br /> <% end %> <p>カテゴリから探す</p> <% Category.all.each do |c| %> <%= check_box_tag "category_id[]", c.id %> <%= c.name %><br /> <% end %><br /> 価格指定 <%= text_field_tag "price1" %> ~ <%= text_field_tag "price2" %></br> <%= submit_tag "検索"%> <% end %> =================================================== 尚、params[:maker_id].include? 等のようにメーカの指定がある場合は、この例は考慮していません。 全てのメーカー、全てのカテゴリから選択させています。ですので、ここは、適宜修正してください。 contoller側は、search_priceにまとめるものとします。 この場合、以下のパターンになります。 1.メーカーでいくつか選択されたか又は一切選択されていない。 2.カテゴリでいくつか選択されたか又は一切選択されていない。 3.価格下限が指定されたか、又は指定されていない。 4.価格上限が指定されたか、又は指定されていない。 これらの全ての組み合わせは2×2×2×2=16通りになります。 従って、ifの組み合わせで16個の検索文を記述することになりますが、これを1つの検索文にすることが 今回の目標です。 予備知識として、「whereメソッドは複数連結して記述することが可能である」ということを理解しておきます。 これは、 @products = Product.where('price >=? AND price <=?', params[:price1],params[:price2]) は @products = Product.where('price >=?',params[:price1]).where('price <=?',params[:price2]) のようにも記述できるということです。 今回は @products = Product.where(.....).where(....).where(....).where(....) のように書くことを目指します。 この場合のwhereの条件はAND条件で連結されます。 また、where(....)の....の部分が、「空っぽいもの」の場合は、このwhereは、効力をもたず 無いものとして扱われます。 「空っぽいもの」は .blank?が成立するものです。 where("") ・・・空文字列 とか where({}) ・・・空のハッシュ などが該当します。 つまり @products = Product.where('price >=?',params[:price1]).where("")と @products = Product.where('price >=?',params[:price1]) は同じ結果になります。 以上のことを前提にすると、 メーカー、カテゴリ、価格下限、価格上限が全て指定された場合は、 @products = Product.where(:maker_id => params[:maker_id]).where(:category_id => params[:category_id]).where('price >= ?',params[:price1]).where('price <= ?',params[:price2]) と記述すればよいことになります。 従って、ここで、メーカー、カテゴリがともに指定されていないなら、 @products = Product.where({}).where({}).where('price >= ?',params[:price1]).where('price <= ?',params[:price2]) でも良いわけです。 更に、価格下限、価格上限が指定されない場合(要は全て指定されない場合)は、 @products = Product.where({}).where({}).where("").where("")のようになります。 上記は、正しいのですが、価格下限、価格上限はプレイスフォルダを使うことが望ましい(セキュリティ対策)ので、 @products = Product.where({}).where({}).where('price >= ?',0).where('price <= ?',2147483647) のようにします。 (価格はDB上は0円以上で、2147483647円以下とします。2147483647は32ビット整数の最大値です。 今回、2147483647としましたが、正確には、DB上に実装される価格の最大値を指定してください) 上記を踏まえたsearch_priceメソッドは、以下のようになります。 ==================================== def search_price p1 = p2 = Hash.new p3 = 0 p4 = 2147483647 if params[:maker_id] p1[:maker_id] = params[:maker_id] end if params[:category_id] p2[:category_id] = params[:category_id] end unless params[:price1].blank? p3 = params[:price1] end unless params[:price2].blank? p4 = params[:price2] end @products = Product.where(p1).where(p2).where('price >= ?',p3).where('price <= ?',p4) render :action => 'index' end ==================================== 更に、価格順に取得したい場合は、 @products = Product.where(p1).where(p2).where('price >= ?',p3).where('price <= ?',p4).order('price ASC') のようにします。 尚、今回は、価格下限、価格上限の入力チェックはしていません。 (数字でないものが入力された場合とか、価格下限>価格上限のとなる値が指定された場合、本来はエラーメッセージを出すべきと考えています)

_rin
質問者

お礼

tatsu99様 出来ました! すごく丁寧に説明していただきありがとうございます。 ご足労をお掛けした事と思います。 本当にありがとうございましたm(_ _)m またお手すきの時に、コードの説明をしていただいてもよろしいでしょうか? ====================== unless params[:price1].blank? p3 = params[:price1] ====================== これは、ユーザーが入力した場合も、nilの場合も動いていますが、なぜでしょうか?^^; unless params[:price1].blank? #空白じゃなかったら、 p3 = params[:price1] #入力された数字をp3に代入 という意味ではないのですか?^^;

_rin
質問者

補足

価格順に表示を取得する時のorderメソッドを使用して実装してみたのですが、 なにも変化がございませんでした。。 @products = Product.where(p1).where(p2).where('price >= ?',p3).where('price <= ?',p4).order('price ASC') ""ダブルクオーテーションで囲っても一緒でした。。 @products = Product.where(p1).where(p2).where('price >= ?',p3).where('price <= ?',p4).order("price ASC") ログではprice DESCとなっています。どんな原因が考えられるでしょうか? ご教授いただければ幸いです。 ******************************************* SELECT "products".* FROM "products" WHERE (price >='1000') AND (price <='200000') ORDER BY created_at DESC, price DESC ******************************************* よろしくお願い致します。

その他の回答 (2)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

>====================== >unless params[:price1].blank? >p3 = params[:price1] >====================== >これは、ユーザーが入力した場合も、nilの場合も動いていますが、なぜでしょうか?^^; >unless params[:price1].blank? #空白じゃなかったら、 >p3 = params[:price1] #入力された数字をp3に代入 >という意味ではないのですか?^^; unless params[:price1].blank? p3 = params[:price1] end この意味は、ユーザーが下限値を入力した場合のみ、P3にその入力値を設定します。 ユーザーは、入力をしなかった場合はp3 = params[:price1]は実行されません。 if params[:price1] != "" p3 = params[:price1] end と同じ意味です。 p3 = params[:price1] が実行されない場合は、 事前にp3=0があるので、結果としてp3=0になります。 つまりp3はユーザーが入力すればその値、入力しなければ0になります。 その状態で、where('price >= ?',p3)を行なうと、 入力しなかった場合は、where('price >= ?',0)になり、結果として、全ての価格を対象としていることに なります。 p4についても同様に、 where('price <= ?',p4)を行なうと、入力しなかった場合は where('price <= ?',2147483647)になるので、結果として、全ての価格を対象としていることに なります。

_rin
質問者

お礼

tatsu99様 いつもご教授ありがとうございます。 なるほどなるほど!理解できました。 if文ではなくて、unless文を使う意味が分かりました。 勉強になりました。ありがとうございます。 =========================== ifとunlessの違い p3 = 0 if params[:price1].blank? # 空白だったら(trueの場合) p3 = params[:price1] # 値が入っていない end #ここでストップする if params[:price1].blank? #入力値があったら(falseの場合) p3 = params[:price1] #実行されない end #次の文へ ================================= unless params[:price1].blank? # 入力値があったら(falseの場合)  p3 = params[:price1] #入力値が代入される end #次の文へ unless params[:price1].blank? #空白だったら(trueの場合)  p3 = params[:price1] #実行されないので p3 = 0が実行される end #次の文へ 自分への備忘録も兼ねてif とunlessを使った場合の違いをここに書かせていただきました^^; ありがとうございましたm(_ _)m

_rin
質問者

補足

すみません。 if文の書き方は#1の方でご説明くださっておりました。 #1、#2と順を追ってご説明くだっておりましたのに、 先に#2の方を試してしまいましたので、if文を使った方法を理解できずに 的外れなコメントをしました事お詫び致しますm(_ _)m また順を追わずに、大変失礼な事をした事を、深くお詫び申し上げます。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

全ての回答ではありません。現行のスクリプトの問題点の指摘です。 @products = Product.where('price >=? AND price <=?', params[:price1],params[:price2]) @products = Product.where('price >=?', params[:price1]) if params[:price2].blank? @products = Product.where('price <=?', params[:price2]) if params[:price1].blank? これは一見正しく動作しているように見えますが、2点問題点があります。 1点目は、 params[:price1]とparams[:price2]の両方がブランクの場合、上記の3行は全て実行されることです。 従って、その場合、最後の3行目の実行結果が @productsに格納されることです。 そして、そのことをあなたは期待していないということです。(結果的にOKかも知れませんが) (両方がブランクのケースは考慮不要であれば、この限りにあらず) 2点目は、params[:price2]のみがブランクの場合、1行目と2行目が実行され、 結果として、2行目の実行結果が@productsに格納され、正しい結果を得ることができます。 しかしながら、DBへのアクセスを2回行なうことは、パフォーマンス上、良いことではありません。 つまり、DBへのアクセスは(やむを得ない場合を除いて)1回にすべきです。 そのことを考慮して、処理コードを記述すると以下のようになります。 if params[:price1].blank? if params[:price2].blank? @products = Product.all else @products = Product.where('price <= ?',params[:price2]) end else if params[:price2].blank? @products = Product.where('price >= ?',params[:price1]) else @products = Product.where('price >= ? AND price <= ?',params[:price1],params[:price2]) end end これは、検索条件により、検索方法が4通りあり、それを素直にコーディングしたものです。 これは、間違いではないですが、できれば、1つの検索文を記述するだけですむようにしたいはずです。 そのほうが、コードもシンプルになり、試験も楽になるはずです。 その実装方法は、次の回答で記述します。

_rin
質問者

お礼

補足で価格順表示を実装できないと記述致しましたが、教えていただいたコードで実装できました。 ややこしい事を申し上げてすみません。 ありがとうございました。 @products = Product.where(p1).where(p2).where('price >= ?',p3).where('price <= ?',p4).order('price ASC')

関連するQ&A

  • rails3初心者 金額から絞り込み検索

    rails3を勉強中です。 ご教授いただけば幸いです。 実装したい事: DBに登録してあるproductsの一覧から金額を指定して絞り込み検索をしたい 解決してない事: indexに検索結果が表示されません。 コードの書き方をご教授いただければ幸いです。 ==================== views: ==================== <%= form_tag ({:controller => :products, :action => :search_price }), {:method => :post} do %> 価格指定 <%= text_field_tag "price1" %> ~  <%= text_field_tag "price2" %> <%= submit_tag "検索"%> <% end %> ==================== products_controller.rb ==================== def search_price @products = Product.all @product = Product.new @products.each do |product| item = product.price >= params[:price1].to_i && product.price <= params[:price2].to_i if item @product = product end end render :action => 'index' end ==================== views/products/index.html ==================== <% @products.each do |product| %> <%= product.name %> <%= product.price %> <% end %>

    • ベストアンサー
    • Ruby
  • rails3初心者 検索結果を並べ変えたい

    検索結果で表示されたリストを、並べ替えができるようにしたいです。 現在はリンク先をクリックしても、実装できていません。 どこのコードがおかしいのかご教授いただければ幸いですm(_ _)m ======================= views ======================= <%= link_to "安い順", :action => 'low' %> <%= link_to "高い順", :action => 'high' %> <% @products.each do |product| %> 商品名<%= product.code %> 金額<%= product.price %> <% end %> ======================= controller.rb ======================= def check @product = Product.all   render :action => 'check' end def low @products = Product.find(:all, :order => "price ASC") render :action => 'check' end def high @products = Product.find(:all, :order => "price DESC") render :action => 'check' end ご教授よろしくお願い致します。

    • ベストアンサー
    • Ruby
  • rails3初心者 検索対象に別テーブルも含めたい

    ご教授よろしくお願いします。 <実装したい事> productテーブルからmakerテーブルのmaker_nameカラムも検索条件に含めたい。 (productテーブルの検索対象カラムは:codeとname ) (makerテーブルの検索対象カラムは:maker_name ) 以下のコードで試してみましたが、実装できません。 ========================= views ========================= <%=form_tag({:controller => :products,:action => :search}, :method => :get) do %> <%= text_field_tag "search_form",params[:search_form],:size =>25 %> <%= submit_tag '商品検索' %> <% end %> ======================================== products_controller.rb ======================================== def search @products =Product.find(:all, :include => :maker, :conditions =>['maker.maker_name like :value or code like :value or name like :value', {:value=> '%' +params[:search_form]+ '%'}]) end ======================================== リレーションシップ ======================================== product.rb belongs_to :maker **************************** maker.rb has_many :products **************************** どうぞよろしくお願い致します。

  • MySQLでの複数テーブル(4つ)への検索について

    はじめまして、こんばんは。 現在、ECサイトを構築中なのですが、MySQLにPHPから検索をかけたいのですが、どうにも詰まってしまったので、投稿させて頂きました。 PHPバージョン:PHP 5.2.6 DBバージョン:MySQL 4.1.22 機能としては、購入履歴から、購入商品のランキングを作りたいと思っております。 ランキング自体の表示はOKなのですが、そこに商品のカテゴリーを表示させたいのです。 関係するテーブルは以下の通りです。 【order】購入履歴テーブル product_id:商品ID 【products】商品テーブル product_id:商品ID name:商品名 image:商品画像 【p_category】商品カテゴリーテーブル product_id:商品ID category_id:カテゴリーID 【category】カテゴリーテーブル category_id:カテゴリーID category_name:カテゴリー名 parent_category_id:親カテゴリーID 【表示させたい項目】 product_id:商品ID name:商品名 image:商品画像 category_id:カテゴリーID category_name:カテゴリー名 parent_category_id:親カテゴリーID 現在のソースは以下の通りです。 --------------------------------------- SELECT   count(o.product_id) as rank,   name,   image,   p.product_id FROM   order as o,   products as p WHERE   o.product_id=p.product_id GROUP BY   name,   image,   p.product_id ORDER BY   rank desc limit 5 --------------------------------------- 上記にプラスしたいのは、 p.product_idと【p_category】のproduct_idが一致したcategory_idを取得して、【p_category】のcategory_idと【category】category_idが一致したcategory_name、parent_category_idも取得したいです。 分かりにくいうえに、長文になってしまいましたが、ご指導・ご鞭撻のほど宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • rails3初心者 年齢を表示する

    rails3を勉強中です。 お詳しい方、ご教授いただけたら嬉しいです。 実装したい内容 プルボンタンで年齢「20」が選ばれた場合、 その結果を出力する(非モデル) ==================== views:presons/index.html ==================== <%= form_tag :action => :age do %> <%= select("form","age", (1..100))%> <%= submit_tag "表示する"%> <% end %> ==================== presons_controller.rb ==================== def index @preson = Preson.new end def age @preson = params[:form][:age] redirect_to :action => 'index' end ==================== views:presons/index.htmlで選択された 「20」を表示したいのですが、 そのコードの書き方をご教授ください。 どうぞよろしくお願い致します。

    • ベストアンサー
    • Ruby
  • rails3で複数条件から検索して表示、送信

    はじめましてrails初心者です。 皆さまの知恵をご拝借できればと思います。 以下やりたいこと、プログラム含め考え方をご教授いただければと思います。 尚、環境はails3.0.5です。 ----やりたいこと------------------------------------- ・留学エージェント検索サイト: ・参照サイトURL:http://www.ryugaku-seikatsu.net/Agent/AgentSearchShow/ ※行きたい国や目的を選んでそれに対応する留学エージェント会社を検索して、表示する。 --------------------------------------------------- ------考え方--------------------------------------- ※上記サイトを参考にお願いします。 ◆table構成 ・companies(name,email) ・countries ・purposes ・prefectures テーブル、countries、purposes、prefecturesに一致するcompanyを検索して、表示したく テーブルsearchesを作ろうとしています。 searchesテーブル company_id country_id purpose_id prefecturer_id そもそもこのテーブル設計で合っているのかがわかりません。country_id、purpose_id、prefecturer_id をcompany_idに紐付けしたくて上記のような構成になりました。 もっと効率のよいテーブル設計があればご教授ください。 そして、searchesテーブルを各テーブルにbelongs_toでアソシエーションさせて 検索しようと考えていますが、何か腑に落ちません。 また、searchesにidをつけたままの方のがよいのか、外した方がよいのかわかりません。 一応やってみたこととして searchコントローラーを作ってみました。 def search  @searches = Search.where(:country_id => params[:country_id]).where(:puropose_id =>  params[:purpose_id]).where(:prefecture_id => params[:prefecture_id]) end view(検索結果) <% @searches.companies.each do |company| %> <li><%= company.name %></li> <% end %> 上記を実行するとエラーでcompaniesが定義されていないとでてきます。 これもなぜだか、よくわりません。 ---------------------------------------------------------- ------その他わからないこと-------------------------------- 上記サイトを検索して進んでいくと、フォームを入力してフォームデータを送信します。 その際、情報送信先がユーザー、自分、companyだとします。 ユーザー、自分は問題なくできるのですが、検索結果にマッチしたcompany にフォームデータを送信する際に、どのように送信したらよいのかがわかりません。 一応、comapaniesテーブルにemailを入れているのですが、どのように紐付けしてよいの かがわかりません。 ---------------------------------------------------------- これまで、本やサイトで勉強していたのですが、自分のやりたいことに マッチしている情報が見つからなくて、困っています。 基本はRuby on Rails 3 アプリケーションプログラミング (著者 山田 祥寛 ) で勉強しておりますが、まだまだ勉強不足です。 http://www.amazon.co.jp/Ruby-Rails-%E3%82%A2%E3% … まだまだかなりの初心者ですが、何卒宜しくお願い申し上げます。

  • Rails コンボボックスの値の保持について(select_tag,c

    Rails コンボボックスの値の保持について(select_tag,collection_select) こんにちは。 Ruby on Railsで簡単な一覧検索画面を作成中の者です。 検索時の検索条件にコンボボックスを使用しており、検索後にコンボボックスの値を保持したいのですが、どうしてもできません。 どなたかお分かりの方がおられましたらご教授いただけないでしょうか。 下記、作成中のソースです。 Viewの検索条件部 <%- form_tag({:action => "search"},{:method=> "GET"}) do -%> <th class="U" align="left" width="10%"><label for="userNm">ユーザー名</label></th> <td width="90%"><%= text_field_tag :userNm, @userNm %></td>  <th class="U" align="left" width="10%"><label for="authCd">社員権限</label></th> <td width="90%">  <%= collection_select(:auth, :authCd, Auth.find(:all, :order => "AUTH_CD"), :id, :AUTH_NM, :include_blank => true) %>  <td align="center"><%= submit_tag '検索' %></td> Controllerクラス: def search #画面パラメータから検索条件を作成 c = Condition.new # ユーザー名 userNm = "" if params[:userNm] userNm = params[:userNm] c.and "USER_NM", "LIKE", "%#{userNm}%" end # コンボボックスの値を取得 if params[:auth] && !params[:auth]["authCd"].blank? c.and "AUTH_CD", params[:auth]["authCd"] end # 検索処理 @users = User.paginate(:order => "USER_ID asc", :per_page => 5, :page => params[:page], :conditions => c.where) # 検索条件保持 @userNm = params[:userNm] # コンボボックスの値が保持できない if params[:auth] @auth_authCd = params[:auth]["authCd"] end respond_to do |format| format.html # index.html.erb format.xml { render :xml => @users } end end 見づらくて申し訳ありませんが、ざっと上記のようになっています。 もう1つの検索条件であるユーザー名(userNm)は保持できるのですが、コンボボックス(社員権限)の値が保持できません。 select_tagや、selectも使ってみたのですが、どちらも同じ結果でした。 コンボボックスの条件は、Authモデルから値を読込み、一番上は空白にする。というものです。 どのように記述すれば保持できるのか色々調べてみたのですが、結局分からず仕舞いでした。。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • Ruby
  • osCommerce[1054エラー]

    osCommerceをインストールしたんですが、 全体から見て左下に下記のようなエラーが出てしまいました。 1054 - Unknown column 'p.products_id' in 'on clause' select p.products_id, pd.products_name, p.products_image, p.products_tax_class_id, p.products_price, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price from products p, products_description pd, categories c, products_to_categories p2c left join specials s on p.products_id = s.products_id where p.products_status='1' and p.products_id = pd.products_id and pd.language_id = '4' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and c.status = '1' order by p.products_date_added desc limit 10 これはどうすれば直るんでしょうか?

  • rails 1:多で指定した子を持たない親の検索

    rails4で1:多関連のモデルに対して 指定した子を持たない親の検索はどうしたら良いでしょうか? 含まない子の条件は複数指定できるようにしたいです 現状は下記のように実装しているのですが スマートな方法があれば教えてください ----- excludes = [ '除外1', '除外2',... ] ret = Parent.all for exclude in excludes do  ret = ret - Parent.joins(:children).where('children.value = ?', exclude)  ids = ret.map{ |p| p.id }.uniq  ret = where(id: ids) end return ret -----

    • ベストアンサー
    • Ruby
  • EXISTSについて

    以下のようにしているのですが取得できるデータは1回目のselectのみで2回目のデータが 何度やっても取得できません。 $sql1 = 'SELECT //ここのデータは取得できてます。 products_id, name, products_flag, IF("' . $products->beforedays . '" < DATE(create_date), "1", "0") as new FROM products WHERE EXISTS ( SELECT MIN(price1) as min_price1, MAX(price1) as max_price1, MIN(price2) as min_price2, MAX(price2) as max_price2, stock FROM products_class_detail WHERE //1回目のselectで取得したproducts_idを基準に問い合わせ products_class_detail.products_id = products.products_id ) //ここはproductsに存在するフィールドです。 AND status1 = ? AND status2 = ? AND del_flg = ? ORDER BY RAND()'; マニュアルも見てみたのですが取得できない原因がわからない状態におります。 どうすれば取得可能になるでしょうか?宜しくお願い致します。

    • ベストアンサー
    • MySQL

専門家に質問してみよう