问题标签 [junction-table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
437 浏览

sql - Junction 表中的信息通过查询组合到与 1 条记录相关的一个字段中

我在尝试为此示例数据库编写查询时遇到困难:3 个表 = 程序代码、工作、工作代码。Program Code 表通过 Work Code 表与 Work 表有多对多的关系。表格布局如下:

现在员工将完成一项工作,但必须为该工作收取多个代码。这会在“工作代码”表中创建许多记录。我想创建一个查询,该查询将提取员工 ID、工作类型、描述、小时数并链接用于该 1 个工作条目的所有程序代码。我有一个正在运行的查询,但它为每个程序代码创建一行,而不是在一个字段中包含所有程序代码的 1 行。这是带有 SQL 后端的 Access 前端。

这就是我现在所拥有的:

但我希望它在每个工作 ID 的一个字段中包含程序代码。

0 投票
2 回答
4917 浏览

mysql - 数据库设计以启用 Stackoverflow 等多个标签?

我有以下表格。

文章
a_id INT 主唯一
名称 VARCHAR
描述VARCHAR
c_id INT

类别
id INT
cat_name VARCHAR

现在我只是使用

SELECT a_id,name,Description,cat_name FROM Articles LEFT JOIN Category ON Articles.a_id=Category.id WHERE c_id={$id}

这给了我属于某个类别的所有文章以及类别名称。
每篇文章只有一个类别

并且我以类似的方式使用子类别(我有另一个名为 sub_cat 的表)。
但是每篇文章不一定都有一个子类别,它可能属于多个类别。我现在想用多个类别

标记一篇文章,就像在 stackoverflow 上标记的问题一样(例如:使用 PHP、MYSQL、SQL 等多个标签)。稍后我必须显示(过滤)所有带有某些标签的文章(例如:用 php、php + MySQL 标记),我还必须显示标签以及文章名称、描述。 谁能帮我重新设计数据库?


(我在后端使用 php + MySQL)

0 投票
1 回答
1661 浏览

mysql - 具有多个表的联结表上的 MySQL SELECT 查询

我有四个表,假设它们每个只有一个 id 作为列。

  • listings
  • feature
  • location
  • l_f_location作为带有 FK 的连接表listingId,, featureId,locationId

我尝试在l_f_location表中查询给定的一组locationIds(逻辑与匹配),结果只希望那些匹配所有的列表locationIds,例如(7 AND 9 AND 10)。

l_f_location好像

在这种情况下,目标是仅检索listingId11 个 - 匹配locationIds7、9 和 10 的集合。

我尝试了以下查询

" SELECT id, COUNT(*) as num FROM l_f_locations WHERE locationId IN ( 7, 9, 10) GROUP by listingId, locationId HAVING num = 3"

但这会在分组开始时给出错误的计数值。

类似的查询在更简单的联结表上完美运行,例如只有 l_location 与例如“ SELECT id, COUNT(*) as num FROM l_location WHERE locationId IN ( 7, 9, 10) GROUP by listingId HAVING num = 3”。

Rgds,P.

0 投票
1 回答
1541 浏览

php - 使用 MySQL 和 PHP 显示从多个联结表获得的信息

这是一个课程安排应用程序。有一个课程表(id、开始时间、结束时间等),它将通过连接表(通过 ID)链接到学生表(id、名字、姓氏等)和教师表(id、名字, 姓氏等)。这些都是多对多的关系。课程可以有多个学生,学生可以有多个课程。对于老师也是如此。

我的问题是,获取和显示数据的最佳方式是什么?我希望能够列出按日期排序的每节课以及课程中的学生和课程的老师。

一种方法是使用 sql 查询来查找所有课程并通过它们的连接表连接所有表。然后使用循环将它们全部吐出到页面上的表格中。我遇到的问题是,创建的表格在不同的行上列出了相同的课程,以说明每个学生和老师。当尝试按课程开始时间或 ID 浏览时,这会产生一个非常冗余的列表。

将每节课显示为列表中的一行的最佳方法是什么,其中一个包含所有学生的学生列和一个包含所有教师的教师列?

对不起,如果这不清楚。感谢您的任何意见,如果我需要澄清或添加更多详细信息,请告诉我。

表列:

学生表学生
ID名字姓氏电子邮件等

教师表
teacherID firstName lastName email 等

课程表
courseID startTime endTime

课程/学生 Junc 表
juncID courseFK StudentFK

课程/教师 Junc 表
juncID courseFK TeacherFK

所需的输出: https ://docs.google.com/file/d/0BxmJPAg7gA1AODZKOUg1RXFwMDQ/edit?usp=sharing

更新:我在哪里。我想我明白了

功能

find_teachers_by_lesson_id 函数与学生函数相同,只是访问教师表。

在实践中这是可行的,但有人可以评论结构吗?这是一个可以接受的解决方案,还是会在以后给我带来问题?再次感谢您的所有意见!

0 投票
2 回答
47 浏览

php - 使用计算字段为联结表创建记录并测试流程

我无法为我正在处理的一段代码编写测试。我有两个表,我正在尝试为其创建一个联结表,如下所示:

根据some_data字段中的某些标准,我必须提取一组费用和一组货物,charges.amount并按shipments.weight. 结果将被存储distributed_details。在进行此分配时,我还必须根据 中的剩余内容执行一些其他计算,some_data这些内容将存储在distributed_details.another_calculated_field.

是否有一种测试此功能的好方法,并确保这些分配的金额实际被提取并分配给每条记录?出于内存限制的原因,我已将每个细节的持久性委托给此方法中的 detailMapper - 我有时必须提取数万个货物,并且将所有产生的费用返回到一个数组中会使我的内存不足。

0 投票
1 回答
85 浏览

mysql - MySQL 联结表在创建键后未更新

我首先创建了 2 个表。后来我意识到我需要在两者之间添加 M:M 关系,所以我创建了一个联结表并在表之间创建了必要的关系。我遇到的问题是,在创建联结表后,它不会自动填充其他 2 个表中的数据。是否应该自动从其他表中提取这些数据,还是我遗漏了什么?

0 投票
2 回答
2085 浏览

sql - 如何在不破坏范式的情况下为多对多关系构建连接表

我有这两张表,公司和所有者。现在它们都处于正常形式,但我需要在它们之间创建多对多关系,因为一个公司可以有很多所有者,而一个所有者可以有很多公司

我之前得到了一个答案,即向公司添加一组 CompanyOwners(带有所有者 UUID)是否会破坏 Normal Form,它会破坏 Normal Form,并且已经能够收集到可以使用的是Junction Table,请参阅线程

我的问题如下:创建一个额外的连接表,如下所示,会打破正常形式吗?

0 投票
5 回答
107 浏览

mysql - SQL 选择以消除在下一列中具有 2 个其他值的重复值

我已经构建了一个像这样的连接表。

表名: myTable

我想选择不具有 c_id 3 和 4 的 p_id。在这种情况下,只有 p_id 3 同时具有 c_id 3 和 4,因此在 select 语句之后,查询应该返回 p_id 1 和 2。问题是我尝试不同一种方法,但它仍然行不通。我真的需要帮助。

我的查询

1.)SELECT DISTINCT p_id FROM myTable WHERE c_id != 3 AND course_id != 4;

问题:它仍然返回 3 作为结果之一,因为 3 的 c_id 为 2

0 投票
1 回答
175 浏览

database - 数据库分析-连接表

这件事让我很困惑,我有一个大学信息系统学生表和科目(课程)表之间的连接表,主键是复合键(StudentID,SubjectID),它们都是外键,但学生可能会在考试中失败并重复主题,这样我们就会有重复的PK,我们需要记录所有数据。我有两种方法可以解决这个问题,但我不知道最好的方法?

  1. 添加新列作为主键而不是复合键。
  2. 加入复合键 Season Column 和 year 列,复合键将是(StudentID,SubjectID,Season,Year)。我不得不提一下,我不需要这个复合键作为外键。

哪种方式对性能和数据库完整性更好?

0 投票
1 回答
458 浏览

c# - 具有联结表的多对多表的正确模型实现

我没有首先使用代码,我创建了一个名为艺术家的表,其中包含一个 ID 和名称字段,一个名为专辑的表,其中包含一个 ID 和标题字段,以及一个包含艺术家 ID 和专辑 ID 的 junction_artists_albums 表。

这是我的模型/上下文类:

艺术家:

专辑:

音乐数据库上下文:

这不起作用,因为连接表没有被填写。对不起,如果这是一个愚蠢的问题,但我对实体框架很陌生