脚本宝典收集整理的这篇文章主要介绍了php – MySql |方面的搜索更改,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我的桌面结构:
CREATE TABLE PRoducts (`id` int,`description` vArchar(9),`user_id` int); INSERT INTO products (`id`,`description`,`user_id`) VALUES (1,'my car',3),(2,'dream car',(3,'New car',(4,'Old car',4); CREATE TABLE fields (`id` int,`field_name` VARchar(14)); /*Meta_name*/ INSERT INTO fields (`id`,`field_name`) VALUES (1,'Make'),'Model'),'Color'),'Car TyPE'),(5,'Interior Color'); CREATE TABLE fields_values (`id` int,`field_id` int,`field_value` varchar(7)); /*Meta_value*/ INSERT INTO fields_values (`id`,`field_id`,`field_value`) VALUES (1,1,'BMW'),2,'3Series'),3,'WhITe'),4,'Coupe'),5,'Black'),(6,(7,'2Series'),(8,(9,(10,'Grey'),(11,'Honda'),(12,'Civic'),(13,'red'),(14,'Sedan'),(15,'Black'); CREATE TABLE products2fields_values (`id` int,`product_id` int,`field_value_id` int); INSERT INTO products2fields_values (`id`,`product_id`,`field_value_id`) VALUES (1,1),2),4),5),5);
SELECT field_name,field_value,COUNT(DISTINCT pid) count From fields ft JOIN fields_values fvt ON fvt.field_id = ft.id JOIN products2fields_values p2fv ON p2fv.field_value_id = fvt.id LEFT JOIN ( SELECT p.id pid From products p JOIN products2fields_values p2fv ON p2fv.product_id = p.id JOIN fields_values fvt ON fvt.id = p2fv.field_value_id JOIN fields ft ON ft.id = fvt.field_id group by p.id HAVING MAX(ft.id = 1 AND p2fv.field_value_id = 1) = 1 AND MAX(ft.id = 4 AND p2fv.field_value_id = 4) = 1 ) LJ ON p2fv.product_id = LJ.pid GROUP BY field_name,field_value;
我试图得到结果:
| field_name| field_value| count | |----------------|------------|-------| | Car Type | Coupe | 2 | | Car Type | Sedan | 0 | | Color | Black | 1 | | Color | Red | 0 | | Color | White | 1 | | Interior Color | Black | 2 | | Interior Color | Grey | 1 | | Make | BMW | 2 | | Make | Honda | 0 | | Model | 2Series | 0 | | Model | 3Series | 1 | | Model | Civic | 0 |
SELECT field_name,COUNT(val.id) as count FROM fields ft JOIN fields_values fvt ON fvt.field_id = ft.id LEFT JOIN products2fields_values val ON val.field_value_id = fvt.id GROUP BY field_name,field_value;
我不知道你为什么加入你的产品表,因为你的结果似乎不是必需的.我不明白为什么你实现了你的奇怪的HAVING子句.
请查看我的查询结果.
以上是脚本宝典为你收集整理的php – MySql |方面的搜索更改全部内容,希望文章能够帮你解决php – MySql |方面的搜索更改所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。