我有三个表:
教练
设备
运动
这是 SQL FIDDLE 页面的链接,这样您就可以看到准备好的表格,以便更好地理解我的意思。 SQL Fiddle prepared tables
每个字段的简要说明 c_id = coach id, cName = coach name, e_id = equipment id, eName = ename of the equipment, termUsed = 到目前为止设备已经使用的学期数, sports = 他们教授的运动(有些教授多项)
运动表已标准化,其中针对他们教授的每项运动都有一个字段。有些教练只教授一项运动,有些则教授多项运动。根据我在 StakOverFlow 上看到的其他帖子,我被建议规范化数据。
主键 Coach(c_id), Equipment(e_id)
外键
装备(c_id) 引用教练(c_id)
运动(c_id)引用教练(c_id)
我需要什么
(结果集在列中)
[Coach A_id][Coach A_name][Equipment A_id][Equipment A_Name][Common Sport][coach B_id][Coach B_name][Equipment B_id][Equipment B_name]
我需要一个结果集,它返回两个教练的 ID 和姓名、他们教授的常见运动,以及根据他们的术语使用(设备使用的术语数相等)匹配的设备(属于每个教练)为了)。
*过去一周我能弄清楚的是:*
SELECT DISTINCT sa.c_id, sb.c_id, sb.sport, coach.name
FROM sportsTaught sa, sportsTaught sb
JOIN coach ON coach.c_id = sb.c_id
WHERE sa.sports = sb.sports
AND sa.c_id <> sb.c_id
ORDER BY sb.c_id;
到目前为止,这就是我所能弄清楚的;一个查询,它允许我匹配并显示两位教练的结果,他们分享他们教授的一项或多项常见运动。这只解决了问题的一部分,因为它将教练与他们教授的一项常见运动相匹配,但它也不会根据他们使用的术语数量来匹配设备(由个别教练拥有)。
目标
这个项目的重点是在社区中心内匹配教练(他们自己购买了设备),根据一项共同的运动来交换设备(同样磨损)。请记住,这是在一个低收入社区,所以我们没有太多预算可以使用。所以我正在创建这个数据库作为降低成本和更足智多谋的解决方案。还可以帮助教练获得同样磨损的设备……这样就不会有人得到比他们交易的设备更旧的设备。我们很穷..所以我们尽量足智多谋。 Volley 也可以用作足球来教 children 。这不是一个专业团队,而是一个针对低收入地区 child 的社区中心外展计划。
我之前曾因发布低质量的帖子而受到警告。我已阅读必要的文件,并已尽力遵守所有规则和准则。在发这篇文章之前,我也搜索了一个星期来寻找答案。
最佳答案
改掉使用叉积的习惯,尤其不要将叉积与显式JOIN 混合使用。只需始终如一地使用 JOIN。
要解决您的问题,您需要两次加入 coach 表,然后两次加入 equipment 表,每个教练一次。然后要求termUsed相同,但名称不同。
SELECT ca.c_id coachA_id, ca.cName coachA_name, ea.e_id equipmentA_id, ea.eName equipmentA_name,
sa.sports,
cb.c_id coachB_id, cb.cName coachB_name, eb.e_id equipmentB_id, eb.eName equipmentB_name
FROM sportTaught sa
JOIN sportTaught sb ON sa.sports = sb.sports AND sa.c_id < sb.c_id
JOIN coach ca ON ca.c_id = sa.c_id
JOIN coach cb ON cb.c_id = sb.c_id
JOIN equipment ea ON ea.c_id = ca.c_id
JOIN equipment eb ON eb.c_id = cb.c_id AND ea.termUsed = eb.termUsed AND ea.eName != eb.eName
ORDER BY ca.c_id
关于mysql - 多个变量、表和参数合并到一个查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48466469/
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是