php项目列表,php – 如何获取类似项目的列表
我有4张桌子:
项目
+----+------+---------+-----+
| id | name | city_id | ... |
+----+------+---------+-----+
属性
+----+------+-----+
| id | name | ... |
+----+------+-----+
item_attribute
+----+---------+--------------+
| id | item_id | attribute_id |
+----+---------+--------------+
市
+----+------+-----+
| id | name | ... |
+----+------+-----+
项目和属性具有多对多关系.
物品仅位于一对多的城市中
题:
我正在使用php(Laravel).如何在一个城市中为一个具有相似属性的项目获取项目列表(带LIMIT)?属性列表永远不等于2个项目.
是否可以使用MySQL查询?
例:
| ItemName | Attributes | City |
+----------+-----------------------+------+
| Alpha | one, two, three, four | NY |
| Beta | five, six, seven | NY |
| Gamma | one, three, seven | NY |
| Delta | one, six, eight | CA |
| Epsilon | two, three, four | NY |
| Zeta | ten, nine | NY |
我想为Alpha选择类似的项目,它们将是:Gamma,Epsilon,因为它们具有相似的属性.
Delta将不会被选中,因为它位于另一个城市.
最佳答案 如果你同时传入了item_id和city_id:
SELECT i.name,
GROUP_CONCAT(a.name) attributes,
c.name
FROM items i
JOIN city c
ON c.id = i.city_id
JOIN item_attribute ia
ON ia.item_id = i.id
AND EXISTS (
SELECT 1
FROM item_attribute ia1
JOIN item_attribute ia2
ON ia2.attribute_id = ia1.attribute_id
AND ia2.item_id = ia.item_id
WHERE ia1.item_id = :item_id /* Pass in item id variable */
)
JOIN attributes a
ON a.id = ia.attribute_id
WHERE i.city_id = :city_id /* Pass in city id variable */
GROUP BY i.name, c.name
如果你只是想传递示例项id :(有点草率,但应该工作)
SELECT i.name,
GROUP_CONCAT(a.name) attributes,
c.name
FROM items base
JOIN items i
ON i.city_id = base.city_id
JOIN city c
ON c.id = i.city_id
JOIN item_attribute ia
ON ia.item_id = i.id
AND EXISTS (
SELECT 1
FROM item_attribute ia1
JOIN item_attribute ia2
ON ia2.attribute_id = ia1.attribute_id
AND ia2.item_id = ia.item_id
WHERE ia1.item_id = base.id
)
JOIN attributes a
ON a.id = ia.attribute_id
WHERE base.id = :item_id /* Pass in item id variable */
GROUP BY i.name, c.name
**更新**
排序:
...
JOIN (
SELECT ia2.item_id, COUNT(*) count
FROM item_attribute ia1
JOIN item_attribute ia2
ON ia2.attribute_id = ia1.attribute_id
AND ia2.item_id = ia1.item_id
/* AND ia2.id != ia1.id /* If you don't want the original item */
WHERE ia1.item_id = base.id
GROUP BY ia2.item_id
) similar
ON similar.id = ia.item_id
...
ORDER BY similar.count DESC
php项目列表,php – 如何获取类似项目的列表相关推荐
- IDEA 提交项目至Git与获取Git项目
1.IDEA提交项目至git 注:保证已安装Git分布式管理系统,没有自行百度安装git 1)在IDEA中配置Git与GitHub a)Git: File-->Settings --> V ...
- 云对象获取服务器的文件列表,云对象获取服务器的文件列表
云对象获取服务器的文件列表 内容精选 换一换 通过应用与华为OBS(Object-based Storage Service)对接,实现对象或者Widget资产存储功能.对象存储服务(Object-b ...
- 带评分的Jupyter资源列表:270个开源项目,总计24w星,帮你快速找代码
子豪 发自 凹非寺 量子位 报道 | 公众号 QbitAI 如何从Jupyter的N多功能中,快速get到自己想要的内容? 这份超级清单--「Best-of Jupyter」,帮你整理了270多个精选 ...
- 在Python中给定包含该项目的列表的情况下查找项目的索引
对于列表["foo", "bar", "baz"]和列表"bar" ,如何在Python中获取其索引(1)? #1楼 a ...
- python自动读取excel文件邮箱列表,自动批量发送邮件项目(附使用方法+代码)
python自动发送邮件项目 项目简介 使用方法 项目结构 完整项目代码 结语 项目简介 该项目功能是利用python自动读取excel文件中的邮箱列表,并批量发送邮件到目标邮箱,进行客户挖掘的.该项 ...
- React项目实战之租房app项目(四)长列表性能优化城市选择模块渲染列表
前言 目录 前言 一.长列表性能优化 1.1 概述 1.2 懒渲染 1.3 可视区渲染(React-virtualized) 二.react-virtualized组件 2.1 概述 2.2 基本使用 ...
- 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )
文章目录 I . 创建 NDK 项目 II . NDK 项目 相关配置 III . NDK 中获取 Android 版本号 IV . 使用 __system_property_get 可获取的参数 I ...
- Spring MVC中获取当前项目的路径
Spring MVC中获取当前项目的路径 在web.xml中加入以下内容 <!--获取项目路径--><context-param><param-name>webAp ...
- python获取工程根目录_【Python】获取当前项目根路径/目录
""" -*- coding:utf-8 -*- @Time :2020/9/23 18:16 @Author :Jarvis @File :jar_project_ut ...
最新文章
- 关于Mysql5.6半同步主从复制的开启方法【转】
- Python爬虫之旅_(数据解析)_Xpath
- 为什么linux远程一进入sudo su就卡住_Linux 实战(上)
- DeFi衍生品协议dFuture未来5日将通过公测奖励100万枚DFT
- linux内核寻址,深入理解Linux内核-内存寻址
- 算法:同构字符串205. Isomorphic Strings
- UVA 10602 - Editor Nottoobad
- 汉澳sinox2013支持的PCI/USB无线网卡,购买必看
- ceph的数据存储之路(7) -----PG 的状态机和peering过程
- 逻辑谬误_跟上的谬误
- CSAPP-Lab03 Attack Lab 详细解析
- 可以边玩游戏边学编程的手游盘点
- 什么是南向接口和北向接口,南北流量和东西流量
- 金蝶二次开发的常见类型
- php微信短网址生成,如何把微信文章网址长连接(长网址)转换为短连接(短网址)...
- 7.2 IDEA 没有Java EE
- 限电模块的在学生宿舍管理中的功能要求
- 记 随手科技2020届实习生笔试题(Java开发工程师)笔试题
- iOS完整学习路线图
- Docker 学习实战路线
热门文章
- 使用 NodeJS + Express 從 GET/POST Request 取值 -摘自网络
- webservice(基础)
- jQuery $.post $.ajax用法
- Google Gears 指南
- 协同过滤的itemCF,userCF区别适用场景
- 单核工作法18:简化协作(下)
- 云炬随笔20211126(2)
- [我的1024开源程序]60元写的宠物网页和音乐网页
- 收藏!AI 最全干货超级大列表,100+ 张速查表全了!
- 海南师范大学计算机设计大赛证书,我校品牌VI设计作品在中国大学生计算机设计大赛海南省赛中获得一等奖...