キーワードに基づいて商品IDを取得するクエリがあります。複数のグループを持つmysqlクエリ?
SELECT indx_search.pid
FROM indx_search
LEFT JOIN word_index_mem ON (word_index_mem.word = indx_search.word)
WHERE indx_search.word = "phone"
GROUP BY indx_search.pid
ORDER BY indx_search.pid ASC
LIMIT 0,20
これはうまくいきましたが、今私はさらに進んで、このクエリに「価格帯」を実装しようとしています。
CREATE TABLE `price_range` (
`pid` int(11) NOT NULL,
`range_id` tinyint(3) NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
この表には、製品IDとrange_idが含まれています。価格帯値がここに格納されています
CREATE TABLE `price_range_values` (
`ID` tinyint(3) NOT NULL AUTO_INCREMENT,
`rangeFrom` float(10,2) NOT NULL,
`rangeTo` float(10,2) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=32 DEFAULT CHARSET=latin1
は、私は多くの製品は、現在のクエリ内の特定の価格帯と一致するかのCOUNT()とGROUPのprice_range.range_idにしたいです。私はまだ製品IDの20件の結果を受け取っています。
だから、の線に沿って何か:
SELECT indx_search.pid, price_range.range_id as PriceRangeID, COUNT(price_range.range_id) as PriceGroupTotal
FROM indx_search
LEFT JOIN windex_mem ON (windex_mem.word = indx_search.word)
LEFT JOIN price_range ON (price_range.pid = indx_search.pid)
WHERE indx_search.word = "memory"
GROUP BY indx_search.pid, PriceRangeID
ORDER BY indx_search.pid ASC
LIMIT 0 , 20
が、これは追加のクエリを破裂せずに達成することは可能ですか?
あなたが製品テーブル内の価格の列がすでにありますビット –
を緩和することができます製品テーブル内の価格の列を作ることができます。私はこれを間違ったやり方でやっていますか?私はすべての私の製品IDを取得した後私は製品テーブルにアクセスします..参加は道順が遅くなるようです – nick