これはレビューウェブサイトに関するものです。レビューサイトの平均評価値を取得するMYSQLクエリ?
私は全体的な平均評価値に基づいてアイテムのリストをソートしようとしています。私はAVG機能があるが、それをどのように組み込むのかはわかりません。また、review_category_listは他のデータの表示に対処するためのクエリであり、格付け質問とは特に関係しません。ここで
は、私がこれまで持っていますが、何らかの形で各項目の評価を平均で作業する必要がありますクエリです:ここでは
SELECT DISTINCT (
item_id
), item_name, des_location, address, city, state, zip, country, dedicated, item_desc, abv, item_type
FROM review_category_list, review_items
LEFT JOIN review ON review.review_item_id = review_items.item_id
WHERE category_id =14
AND category_id != -1
AND cat_id_cloud =14
ORDER BY review.rating DESC
LIMIT 0 , 10
は、私のテーブル構造である:
CREATE TABLE `review_category_list` (
`cat_id_cloud` int(11) NOT NULL AUTO_INCREMENT,
`category` varchar(255) NOT NULL DEFAULT '',
`catorder` tinyint(4) NOT NULL DEFAULT '0',
`parent` varchar(255) NOT NULL DEFAULT '',
`parent_id` int(11) NOT NULL DEFAULT '-1',
`abv` char(2) NOT NULL,
`olditemid` int(11) NOT NULL COMMENT 'item_id from the review_items_orig table',
PRIMARY KEY (`cat_id_cloud`),
UNIQUE KEY `category` (`category`,`parent_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `review_items` (
`item_id` int(11) NOT NULL AUTO_INCREMENT,
`item_name` varchar(250) NOT NULL DEFAULT '',
`item_desc` longtext NOT NULL,
`item_type` varchar(250) NOT NULL DEFAULT '',
`category` varchar(250) NOT NULL DEFAULT '',
`category_id` int(11) DEFAULT '-1',
`sortorder` tinyint(4) NOT NULL DEFAULT '0',
`item_image` varchar(12) NOT NULL DEFAULT '',
`item_aff_url` varchar(250) NOT NULL DEFAULT '',
`item_aff_txt` varchar(250) NOT NULL DEFAULT '',
`item_aff_code` varchar(250) NOT NULL DEFAULT '',
`des_location` varchar(250) NOT NULL,
`address` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL,
`state` varchar(50) NOT NULL,
`zip` varchar(20) NOT NULL,
`country` varchar(255) NOT NULL,
`phone` varchar(15) NOT NULL,
`lat` float(10,6) NOT NULL DEFAULT '0.000000',
`lon` float(10,6) NOT NULL DEFAULT '0.000000',
`dedicated` enum('yes','no','dontknow') NOT NULL DEFAULT 'no',
`des_contact` varchar(64) NOT NULL,
`chapterid` int(5) NOT NULL DEFAULT '0',
`oldcat` int(11) NOT NULL,
PRIMARY KEY (`item_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `review` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`rating` varchar(4) NOT NULL DEFAULT '',
`summary` varchar(250) NOT NULL DEFAULT '',
`review` longtext NOT NULL,
`source` varchar(250) NOT NULL DEFAULT '',
`location` varchar(250) NOT NULL DEFAULT '',
`review_item_id` int(11) NOT NULL DEFAULT '0',
`visitorIP` varchar(15) NOT NULL DEFAULT '0',
`date_added` date NOT NULL DEFAULT '0000-00-00',
`useful` int(11) NOT NULL DEFAULT '0',
`notuseful` int(11) NOT NULL DEFAULT '0',
`approve` enum('y','n') NOT NULL DEFAULT 'n',
`username` varchar(50) NOT NULL DEFAULT '',
`sig_show` enum('y','n') NOT NULL DEFAULT 'n',
`rating2` char(3) NOT NULL DEFAULT '',
`user_image` varchar(75) NOT NULL DEFAULT '',
`oldid` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `id_2` (`id`),
FULLTEXT KEY `summary` (`summary`,`review`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6443 ;
この上の任意のに役立つだろう大変感謝しています!
ティム
テストデータも提供すれば、これはほぼ完璧な質問 – RiggsFolly
となります。希望の結果を提供しても本当に完璧な質問になります。 – Strawberry
DISTINCTは関数ではないことに注意してください。しかし、おそらくあなたはそれをすでに考え出しました。 – Strawberry