草庐IT

多对多

全部标签

sql - 使用具有一对多关系的连接来最小化 SQL 查询

因此,让我先声明,我无论如何都不是SQL向导。我想做的事情作为一个概念很简单,但在尝试尽量减少我正在执行的数据库查询量时给我带来了一个小挑战。假设我有一张部门表。每个部门内都有一个员工列表。列出所有部门以及每个部门的员工的最有效方法是什么。例如如果我有一个部门表:idname1sales2marketing还有一个人员表:iddepartment_idname11Tom21Bill32Jessica41Rachel52John像这样列出所有部门和每个部门的所有员工的最佳方式是什么:销售汤姆比尔雷切尔市场营销杰西卡约翰假装两张table实际上都很大。(我想避免获取部门列表,然后遍历结果并

mysql - 如何在 MySQL 的多对多关系中以逗号分隔的列表连接来自一个字段的数据?

我在人员和部门之间存在多对多关系,因为一个人可以在多个部门。PeopleDepartments-----------------pIDpNamedeptIDdeptName1James1Engineering2Mary2Research3Paul3Marketing4CommunicationsPeople_Departments------------------pIDdeptID11122224313233我想要的是这个:pNamedeptNameJamesEngineering,ResearchMaryResearch,CommunicationPaulEngineering,R

php - MySQL 与 FOREIGN KEYS 的多对多关系

我正在尝试在我的MySQL数据库中创建多对多关系。我有三张table:Films、Genres和Films_Genres。我正在使用以下代码来设置它们:CREATETABLEFilms(idINTNOTNULLAUTO_INCREMENT,PRIMARYKEY(id),TitleVARCHAR(255)),CREATETABLEGenres(idINTNOTNULLAUTO_INCREMENT,PRIMARYKEY(id),NameVARCHAR(255)),CREATETABLEFilms_Genres(film_idINTNOTNULL,genre_idINTNOTNULL,PRI

mysql - 同一张 table 上的多对多

有趣的是我从来没有遇到过这个!我从来没有想过一个人可以在一张table上建立“多对多”关系-直到我开始研究一个用户可以彼此“交友”的系统(社交网络)。标准的查找表,至少在我习惯使用它的方式中,在这里是不合适的。让我们保持简单:用户表有“id”和“name”列。User_relationship表有“uid1”和“uid2”,表示用户是“friend”或“伙伴”或“好friend”或“其他”。很快就会很明显这里的问题是什么-uid1和uid2是来自同一表的同一列的相同数据类型,这意味着唯一键变得有缺陷。例如:uid1=1uid2=2等同于:uid1=2uid2=1因此可能返回2条记录,如

php - 使用 Doctrine 创建一对多的多态关系

让我先概述一下场景。我有一个Note对象,可以分配给许多不同的对象一本书可以有一个或多个笔记。一张图片可以有一个或多个注释。一个Address可以有一个或多个Note。我设想的数据库应该是这样的:书id|title|pages1|harrypotter|2002|gameofthrones|500图片id|full|thumb2|image.jpg|image-thumb.jpg地址id|street|city1|123street|denver2|centralave|tampa注意id|object_id|object_type|content|date1|1|image|"lov

php - 限制与 Laravel 的多态多对多关系中的相关记录

我正在使用Laravel5.1,我需要使用polymorphicmany-to-manyrelationship来限制我拉取的相关记录的数量。.我想做的是通过parent_id获取类别列表。对于每个类别,我只想发布四个帖子。我已经使用下面的代码进行了此操作,但它会导致一堆额外的查询。如果可能的话,我只想访问数据库一次。如果可能的话,我想使用Laravel/Eloquent框架,但我对目前可用的任何方法持开放态度。@foreach($categoriesas$category)@if($category->posts->count()>0){{$category->name}}slug}

mysql - MySQL 中的一对多关系——如何建立模型?

我有两个表:1)面积2)map每个区域至少有一张map,但也可以有多张map。一张map只能属于一个区域。如何在MySQL中构建它? 最佳答案 createtableArea(idintprimarykeyauto_increment,namevarchar(100));createtableMap(idintprimarykeyauto_increment,area_idintnotnull,namevarchar(100),foreignkey(area_id)referencesarea(id));SqlFiddle每个Map

mysql - 一对多 MySQL

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:MySQLRelationships我正在尝试在MySQL中使用外键创建一对多关系。两个表,user和location。每个user可以有多个location,但是每个location只能有一个user。我该如何配置?如果有帮助,我正在使用HeidiSQL,尽管我也可以输入代码。 最佳答案 MySQL不知道,也不需要知道关系是1-1还是1-many。没有SQL支持多对多关系,都需要一个中间表,将多对多关系拆分为2个单独的1-many。区别在于控制关系的逻辑

php - Doctrine 多对一关系持久化操作

我有一个故事表和用户表。故事表中的userid列是一个外键,它引用了用户表中的id。我设置的关系是一个用户可能有很多故事,这些故事存储在故事表中。我已经创建了两个表的实体。但如果尝试仅将操作持久化到故事表,则会询问新用户条目的详细信息。我的目标是使用现有userId添加一个新故事。我在这里发布错误:Anewentitywasfoundthroughtherelationship'Story#_userId'thatwasnotconfiguredtocascadepersistoperationsforentity:User@0000000038960c50000000008ea938

匹配所有标签的多个 "tags"(多对多关系)的Mysql连接查询?

我正在尝试查询匹配所有给定标签集的对象。基本上,我希望用户能够添加越来越多的标签来过滤或“缩小”他们的搜索结果,有点像newegg.com所做的。我的表结构是一个对象表、一个标签表和一个MANY:MANY关系表ObjectsTags。所以我有一个像这样的JOIN查询:SELECT*FROMObjectsLEFTOUTERJOINObjectsTagsON(Objects.id=ObjectsTags.object_id)LEFTOUTERJOINTagsON(Tags.id=ObjectsTags.tag_id)我尝试使用IN子句/条件,如下所示:SELECT*FROMObjectsL