1

MySQL 5.0.88製品テーブルをドリルダウンするための検索フォーム (実行中) があります。検索は2段階検索です。最初の実行は を取得しnumber of results、2 回目の実行は を取得しdata of records x-yます。

デフォルトですべてのレコードの最小/最大価格を表示していますが、クエリ結果に基づいて最小/最大値を更新したいと考えています。これを行う最善の方法は、レコード数を取得する最初のクエリ内にあると考えていました。

現在、次のようになっています。

SELECT  COUNT( a.id ) AS recordcount
        , a.nos
        , a.nos_anzeige

FROM artikelstammdaten a

WHERE 
        a.iln != "1111111111111" AND a.iln != "2222222222222" AND a.iln != "7777777777777"
    AND a.aktiv = "ja"
    AND a.artikelnummer LIKE '%name%' 
AND (a.modus = "OPEN" 
        OR a.iln IN ( 55555555555,66666666666,2222222222222 ) 
        )

GROUP BY a.iln, a.artikelnummer, a.preis_aktuell, a.artikelbezeichnung
HAVING (( sum(a.bestand) != 0 ) OR (a.nos = "ja" AND a.anzeige  = "ja" ))

これにより、一致するすべてのレコードが得られます。

問題:
実際にquery.recordcountは、個々のレコードではなく、単一のレコード内のレコード数 (~ ) のみが必要です (私の試みはCOUNT機能しません)。このようなもの:

  totalrecords    min-price   max-price
  12345           9.99        1.204

ここで、結果セット全体で最小/最大値を選択しようとすることができます。

質問:
クエリを変更するにはどうすればよいですか?

ありがとう!

** 編集: **
私のテーブルは次のようになります:

 CREATE TABLE dummy (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`iln` VARCHAR(13) NULL DEFAULT NULL,
`ean` VARCHAR(35) NULL DEFAULT NULL,
`artikelnummer` VARCHAR(35) NULL DEFAULT NULL,
`preis_ek` DECIMAL(12,2) NULL DEFAULT NULL,
`preis_vk` DECIMAL(12,2) NULL DEFAULT NULL,
`firma` VARCHAR(35) NULL DEFAULT NULL,
`nos` VARCHAR(4) NULL DEFAULT NULL,
`nos_anzeige` VARCHAR(4) NULL DEFAULT NULL,
`aktiv` VARCHAR(4) NULL DEFAULT NULL,
`modus` VARCHAR(4) NULL DEFAULT NULL,
`bestand` DECIMAL(10,0) NULL DEFAULT '0'
 )  

価格はpreis_ekpreis_vkそれぞれの最小/最大を探している場所です。ありがとう!

編集:クエリをそのまま実行すると、次のような結果セットが得られます。

"id"    "nos"   "nos_anzeige"   "MIN(a.preis_ek)"
"1153837"   "nein"  "nein"  "25,10"
"1153797"   "nein"  "nein"  "12,40"
....

min私が間違っていなければ、結果セット全体ではなくレコードごとに選択します

4

1 に答える 1

1

使用できます

    SELECT count(recordcount), 
       Max(max_price), 
       Min(min_price) 
       FROM   (SELECT Count(a.id)   AS recordcount, 
               a.nos, 
               a.nos_anzeige, 
               Max(preis_ek) AS max_price, 
               Min(preis_ek) AS min_price 
        FROM   artikelstammdaten a 
        WHERE  a.iln != "1111111111111" 
               AND a.iln != "2222222222222" 
               AND a.iln != "7777777777777" 
               AND a.aktiv = "ja" 
               AND a.artikelnummer LIKE '%name%' 
               AND ( a.modus = "open" 
                      OR a.iln IN ( 55555555555, 66666666666, 2222222222222 ) ) 
        GROUP  BY a.iln, 
                  a.artikelnummer, 
                  a.preis_aktuell, 
                  a.artikelbezeichnung 
        HAVING ( ( Sum(a.bestand) != 0 ) 
                  OR ( a.nos = "ja" 
                       AND a.anzeige = "ja" ) )) temp
于 2012-08-28T18:25:01.893 に答える