我有一个名为的连接表languages_services基本上连接表services和languages.
我需要找到一个能够同时服务于ENGLISH (language_id=1)和ESPANOL的服务(language_id=2).
table languages_services
------------------------
service_id | language_id
------------------------
1 | 1
1 | 2
1 | 3
2 | 1
2 | 3
Run Code Online (Sandbox Code Playgroud)
使用上面提供的数据,我想测试language_id=1 AND language_id=2结果的样子
QUERY RESULT
------------
service_id
------------
1
Run Code Online (Sandbox Code Playgroud)
显然它不返回service_id = 2的那个,因为它不为Espanol提供服务.
任何提示都非常感谢!
它更像是一个数据库设计问题,我很好奇当只有两组值时,专业数据库管理员会如何处理 - 以下两个设计方案为例,您可以选择哪一个; 为什么?
情景一
table INVOICES
-------------------------------
id | royalty_fee | royalty_type
-------------------------------
1 | 15 | percentage
2 | 10.00 | fixed
1 | 25 | percentage
1 | 25.00 | fixed
Run Code Online (Sandbox Code Playgroud)
要么....
情景二
table INVOICES
----------------------------------
id | royalty_fee | royalty_type_id
----------------------------------
1 | 15 | 1
2 | 10.00 | 2
1 | 25 | 1
1 | 25.00 | 2
table ROYALTY_TYPES
-------------------------------
id | label
-------------------------------
1 | percentage
2 | fixed
Run Code Online (Sandbox Code Playgroud) 我用google搜索和stackoverflowed高低,并没有找到任何具体的解决方案来显示每组的第二(第n)记录.
请考虑下表(按created_at desc排序):
----------------------------------------------
bid_id | status | created_at
----------------------------------------------
1 | cancelled | 2015-10-03
1 | awarded | 2015-10-02
1 | pending | 2015-10-01
2 | pending | 2015-10-01
3 | denied | 2015-10-02
3 | pending | 2015-10-01
Run Code Online (Sandbox Code Playgroud)
结果输出应如下所示(按bid_id分组):
bid_id | status | created_at
----------------------------------------------
1 | awarded | 2014-10-02
3 | pending | 2014-10-01
Run Code Online (Sandbox Code Playgroud)
什么是有效的SQL来实现这一目标?任何提示都非常感谢!