私は実行しており、決定するためにMySQL 5.0.88
実行している検索があります。だけでなく。presearch
number of records
min-max values
element strings of distinct values
クエリの結果は次のようになります。
records min-price max-price sizeRange colorRange
1234 9.00 124.00 S,M,L,XL red,blue,white,orange
私のクエリは次のようになります。
SELECT COUNT(recordcount) AS total_records
, MIN(min_price_ek) AS ek_min
, MAX(max_price_ek) AS ek_max
, SUBSTRING_INDEX( GROUP_CONCAT( DISTINCT sizeRange ), ',', 10 ) AS sz_rng
, SUBSTRING_INDEX( GROUP_CONCAT( DISTINCT colorRange ), ',', 16 ) AS cl_rng
FROM (SELECT a.id AS recordcount
, a.nos
, a.nos_anzeige
, MAX(<cfif variables.preislisten neq "">IFNULL(p.ek, a.preis_ek)<cfelse>a.preis_ek</cfif>) AS max_price_ek
, MIN(<cfif variables.preislisten neq "">IFNULL(p.ek, a.preis_ek)<cfelse>a.preis_ek</cfif>) AS min_price_ek
, a.groesse AS sizeRange
, zu.systemfarbe AS colorRange
FROM artikelstammdaten a
LEFT JOIN farbenzuordnung zu
ON a.farbe = zu.farbe
WHERE a.aktiv = "ja"
AND a.artikelnummer LIKE <cfqueryparam value="#art#" cfsqltype="cf_sql_varchar">
GROUP BY a.iln, a.artikelnummer, a.preis_aktuell, a.artikelbezeichnung
HAVING (( sum(a.bestand) != 0 ) OR (a.nos = "ja" AND a.nos_anzeige = "ja" ))
) AS temp
これは問題なく動作しますが、利用可能なすべてのサイズ/色を選択するのにまだ問題があります. 一部の値を取得していますが、すべてではありません。
私のテーブルは次のようになります。
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,
`bestand` DECIMAL(10,0) NULL DEFAULT '0'
)
したがって、製品は次のようにサイズごとに 1 つのエントリでテーブルに格納されます。
product_id ean size price
1234 111111111111 S 9.99
1234 111111111112 M 9.99
1234 111111111113...
MySQL で得られた情報から、記事の最初のサイズ ( ) のみを選択し、レコードセットのすべての DISTINCT サイズのvs aをS
作成していると思います。GROUP_CONCAT of all DISTINCT first sizes
GROUP_CONCAT
質問: 誰かが私がどのように微調整する必要があるかについて私に指針を与えることができますかGROUP_CONCAT
?
ありがとう!
これは私が現在テストしているクエリです
SELECT COUNT(recordcount) AS total_records
, MIN(min_price_ek) AS ek_min
, MAX(max_price_ek) AS ek_max
, SUBSTRING_INDEX( GROUP_CONCAT( DISTINCT sizeRange ), ',', 10 ) AS sz_rng
, SUBSTRING_INDEX( GROUP_CONCAT( DISTINCT colorRange ), ',', 16 ) AS cl_rng
FROM (SELECT a.id AS recordcount
, a.nos
, a.nos_anzeige
, MAX(a.preis_ek) AS max_price_ek
, MIN(a.preis_ek) AS min_price_ek
, a.groesse AS sizeRange
, zu.systemfarbe AS colorRange
FROM artikelstammdaten a
LEFT JOIN farbenzuordnung zu
ON a.farbe = zu.farbe
WHERE a.aktiv = "ja"
AND a.artikelnummer LIKE "%402%"
GROUP BY a.iln, a.artikelnummer
HAVING (( sum(a.bestand) != 0 ) OR (a.nos = "ja" AND a.nos_anzeige = "ja" ))
) AS temp
3 番目のテーブル (通貨ルックアップ/左結合) を削除しました。これは残りの 2 つのテーブルです。
** artikelstammdaten = product data **
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,
`groesse` VARCHAR(10) NULL DEFAULT NULL,
`farbe` VARCHAR(35) NULL DEFAULT NULL,
`preis_ek` DECIMAL(12,2) NULL DEFAULT NULL,
`preis_vk` DECIMAL(12,2) NULL DEFAULT NULL,
`preis_aktuell` DECIMAL(12,2) NULL DEFAULT NULL,
`marke` 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'
)
** global colors / farbenzuordnung **
CREATE TABLE dummy (
`ILN` VARCHAR(13) NOT NULL,
`farbe` VARCHAR(35) NOT NULL,
`systemfarbe` VARCHAR(35) NOT NULL,
`systemfarbe_en` VARCHAR(35) NOT NULL
)
現在、1 つの製品でテストしています ( 402
)。商品は4サイズ2色なので、データベースには8件のレコードがあります。クエリを実行するs,m,l,xl
と、サイズとred, black
色が Group__concat として返されます。しかし、私は(恣意性?) s
とred
結果として得ているだけです。
理由についてはまだわかりません。