标题可能看起来不是很清楚 - 不确定如何在一行中解释问题。
我有3张 table
TOPIC VIDEO TOPIC_VIDEO
一个主题可以有一个或两个视频。这些视频要么是示例视频,要么不是。
具有相关列名称的表中的示例数据
主题
TOPIC_ID | NAME | COURSE_ID
1 | Excel - Add/Subtract | 1
2 | Excel - sort | 1
3 | Excel - filter | 1
4 | Excel - formulas | 1
VIDEO
VIDEO_ID | VIDEO_URL
10 | www.youtube.com?v=123
12 | www.youtube.com?v=345
13 | www.youtube.com?v=567
14 | www.youtube.com?v=879
15 | www.youtube.com?v=443
TOPIC_VIDEO
TOPIC_VIDEO_ID | TOPIC_ID | VIDEO_ID | IS_SAMPLE
1 | 1 | 10 | Y
2 | 2 | 12 | N
3 | 3 | 13 | N
4 | 3 | 14 | Y
5 | 4 | 15 | N
所以我想做的是为给定的类(class)选择所有主题及其相应的视频。现在,如果一个主题有多个视频 - 我想选择 is_sample 为“N”的视频。
如上例 - topic_id 3 有两个 video_id 为 13 和 14 的视频 - 因此应选择 video_id 13。
这是我目前的查询
select topic.*,count(topic.topic_id),video.video_id,topic_video.is_sample from topic left join topic_video ON topic_video.topic_id = topic.topic_id left join video ON video.video_id = topic_video.video_id where course_id=1 group by topic.topic_id
所以现在如果计数是 2 - 我想选择带有 is_sample='N' 的记录 这可能吗,我怎样才能做到这一点。 非常感谢您的宝贵时间
最佳答案
解决这个问题的一种方法是
SELECT *
FROM topic
LEFT JOIN (SELECT topic_id,
Count(topic_id) t_count
FROM TOPIC_VIDEO
GROUP BY topic_id) t
ON topic.topic_id = t.topic_id
LEFT JOIN topic_video
ON topic_video.topic_id = topic.topic_id
AND TOPIC_VIDEO.IS_SAMPLE = CASE
WHEN t.t_count = 2 THEN 'N'
ELSE TOPIC_VIDEO.IS_SAMPLE
END
LEFT JOIN video
ON video.video_id = topic_video.video_id
输出
| TOPIC_ID | NAME | COURSE_ID | T_COUNT | TOPIC_VIDEO_ID | VIDEO_ID | IS_SAMPLE | VIDEO_URL |
-------------------------------------------------------------------------------------------------------------------------
| 1 | Excel - Add/Subtract | 1 | 1 | 1 | 10 | Y | www.youtube.com?v=123 |
| 2 | Excel - sort | 1 | 1 | 2 | 12 | N | www.youtube.com?v=345 |
| 3 | Excel - filter | 1 | 2 | 3 | 13 | N | www.youtube.com?v=567 |
| 4 | Excel - formulas | 1 | 1 | 5 | 15 | N | www.youtube.com?v=443 |
关于mysql - SQL查询-根据计数条件选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038342/
我正在用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.
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano
我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa
尝试在我的RoR应用程序中实现计数器缓存列时出现错误Unknownkey(s):counter_cache。我在这个问题中实现了模型关联:Modelassociationquestion这是我的迁移:classAddVideoVotesCountToVideos0Video.reset_column_informationVideo.find(:all).eachdo|p|p.update_attributes:videos_votes_count,p.video_votes.lengthendenddefself.downremove_column:videos,:video_vot
我正在尝试按0-9和a-z的顺序创建数字和字母列表。我有一组值value_array=['0','1','2','3','4','5','6','7','8','9','a','b','光盘','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','','u','v','w','x','y','z']和一个组合列表的数组,按顺序,这些数字可以产生x个字符,比方说三个list_array=[]和一个当前字母和数字组合的数组(在将它插入列表数组之前我会把它变成一个字符串,]current_combo['0','0','0']
状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基