2012-08-28 4 views
1

검색 테이블 (MySQL 5.0.88 실행)을 사용하여 제품 테이블을 드릴 다운합니다. 검색은 2 단계 검색입니다. 첫 번째 실행은 number of results, 두 번째 실행은 data of records x-y이됩니다.MySQL에서 최소/최대 값과 함께 레코드 수를 얻는 방법은 무엇입니까?

기본적으로 모든 레코드에 최소/최대 가격을 표시하고 있으며 쿼리 결과를 기준으로 최소/최대 값을 업데이트하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 레코드의 수를 얻는 초기 쿼리 내부에 있다고 생각했습니다.

현재는 다음과 같습니다 : 나에게 모든 일치하는 레코드를 제공

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 

결과 집합에서 최소/최대 값을 선택할 수 있습니다.

질문 :
어떻게 내 쿼리를 수정해야 할, 그래서 만 totalrecords 받고 있어요 (및 최소/최대 값을 추가 할 수 있습니다)?

고맙습니다!

는 ** 편집 : **
내 표는 다음과 같습니다 : I는 각각 최소/최대 찾고 있어요 어디

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을 선택합니다

+0

표의 가격 열은 어디에 있습니까? – Ankur

+0

@AnkurMittal 내 편집 – frequent

+0

을 참조하십시오. 예를 들어 쿼리에 사용할 수있는 최소 및 최대 기능이 있습니다. '최대 (ID) FROM 테이블을 선택하십시오 ' – rsz

답변

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 
+0

을 참조하십시오. – frequent

+0

올바른 트랙'파생 된 모든 테이블은 자체 테이블 이름을 가져야합니다 .' – frequent

+1

@frequent는 코드를 편집하고, 마지막에 임시로 쓰기 만합니다. – Ankur

관련 문제