3

こんにちは、mysql クエリを適切に機能させようとしていますが、正直なところ、どこから始めればよいかわかりません。count 関数は機能すると思いますが、よくわかりません。

私がやろうとしているのは、選択を行うことですが、5行に達するまで、別のクエリ/where句との結合よりも5行未満の行がカウントされる場合です。

したがって、基本的には少なくとも 5 つの行に移動し、5 つ以上に達するまで行を結合し続けます...

    $myquery_mysql = mysql_query("(SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' AND city = '".mysql_real_escape_string($GLOBALS['user_city'])."')
    UNION ALL
    (SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' AND province = '".mysql_real_escape_string($GLOBALS['user_province'])."' )
    UNION ALL
    (SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' )" or die(mysql_error());

私は次のようなことをしますか...

            $myquery_mysql = mysql_query("(SELECT title, city, ad_image, rent, uniqid count(if title > 5) THEN FROM rentals WHERE front_page_ad = '1' AND paid = '1' )"
    UNION ALL
    (SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' AND province = '".mysql_real_escape_string($GLOBALS['user_province'])."' ) 
    ELSE FROM rentals WHERE front_page_ad = '1' AND paid = '1' )" END ;

or die(mysql_error());

私はこれが正しくないことを知っていますが、私はそれを理解しようとしています.

4

2 に答える 2

2

最後にa を追加するLIMIT 5と、すべてのユニオンを使用してクエリ全体を実行し、上位 5 つの結果を選択します。ORDER BY を指定しない限り、ユニオンを実行する順序でリストする必要があります。 .

したがって、最初のクエリに 5 つの結果がある場合は、それらだけが取得されますが、そうでない場合は、次の 2 つのユニオンからの結果が取得されます。あなたの労働組合がそれほど時間を浪費しない限り、これは良い行動のように思えます.

于 2011-08-07T01:35:10.880 に答える
0

私はするだろう:

  • すべての比較を使用して左結合
  • 比較値で並べ替えて、desc一致する値が一致しないものよりも高くなるようにします (これは になりますnull)
  • 使用制限 5
于 2011-08-07T01:43:41.927 に答える