标签: relational-division

mysql select multitable - join

说我有下表

user_table 
id    username
1     abc
2     def
3     ghij

courses_table 
id    title
1     csc
2     math
3     syn

user_courses 
user_id    course_id
2           1
1           3
2           3
Run Code Online (Sandbox Code Playgroud)

我想选择参加课程1和3的用户名,而不是至少1或3,我的意思是1和3

我尝试了以下mysql查询

SELECT DISTINCT  u.* FROM  user_table as u  LEFT JOIN user_courses as uc ON uc.user_id = u.id  WHERE uc.course_id = 1 AND uc.course_id=3;
SELECT DISTINCT  u.* FROM  user_table as u  LEFT JOIN user_courses as uc ON uc.user_id = u.id  WHERE uc.course_id IN (1,3);
SELECT DISTINCT  u.* FROM  user_table as u  LEFT …
Run Code Online (Sandbox Code Playgroud)

php mysql sql relational-division

2
推荐指数
1
解决办法
211
查看次数

将INTERSECT与WITH子句中的表一起使用

这个查询有什么问题:

WITH volcan AS (SELECT DISTINCT v.numturista
                FROM viaje v, sitio s
                WHERE v.numsitio = s.numsitio
                AND s.tipo = 'Volcan'),
    desierto AS (SELECT DISTINCT v.numturista
                 FROM viaje v, sitio s
                 WHERE v.numsitio = s.numsitio
                 AND s.tipo = 'Desierto')
SELECT DISTINCT pais
FROM turista
WHERE numturista IN (volcan INTERSECT desierto);
Run Code Online (Sandbox Code Playgroud)

它不应该等同于以下(因为WITH创建命名的SELECT查询):

SELECT DISTINCT pais
FROM turista
WHERE numturista IN (
(SELECT DISTINCT v.numturista
                FROM viaje v, sitio s
                WHERE v.numsitio = s.numsitio
                AND s.tipo = 'Volcan')
INTERSECT
(SELECT DISTINCT v.numturista
                 FROM …
Run Code Online (Sandbox Code Playgroud)

sql postgresql common-table-expression intersect relational-division

2
推荐指数
1
解决办法
2829
查看次数

一起使用SQL IN AND

有没有办法一起使用IN和AND?问题是我想使用一列将我的查询与多个值匹配.

SELECT * FROM product INNER JOIN values USING(product_id) WHERE value = "large" AND value = "short"
Run Code Online (Sandbox Code Playgroud)

问题是我不能使用IN子句,因为它在值之间定义为OR.

mysql sql relational-division

1
推荐指数
1
解决办法
126
查看次数

多对多关系过滤器

我需要使用与另一个表有许多关系的类别表来过滤我的查询.是否可以使用many2many关系过滤查询?

res_partner有很多category_id与表相关的字段res_partner_category.res_partner,或者我们只是说合作伙伴可以有很多类别.我需要的是过滤res_partners表中有"business"或"retail"类别的表.如果它没有任何这些类别,则不应显示.

另外还有另一个领域,res_partnercategory_value_ids与以下领域有one2many关系res_partners_category_value:

res_partner 有关系的以下字段:

  • category_idres_partner_category(很多2)
  • category_value_idsres_partner_category_value(one2many)
  • name (炭)

res_partner_category 有关系的以下字段:

  • partner_idsres_partner(很多2)
  • name (炭)

res_partner_category_value 有关系的以下字段:

  • category_group_idres_partner_category(很多)
  • category_idres_partner_category(很多)
  • object_idres_partner(很多)

但是,如果我尝试res_partner_category_value在SQL查询中使用表,我会收到错误,我无法在查询中使用它.

例如,如果有4个合作伙伴具有以下类别:

  • 第一种:categ1,categ2,business
  • 第二:零售
  • 第三:零售,商业
  • 第四种:categ1,categ2

查询应返回第一,第二和第三个伙伴.
一个人告诉我,不可能像many2many关系这样过滤.所以我想知道它真的不可能或只是复杂吗?

编辑:
我发现还有一个表叫做res_partner_category_rel.我没有看到它,因为在Openerp管理界面中,您可以看到数据库的所有对象,该表未显示.您只能通过数据库直接看到它.所以我对这个"缺失"的表感到困惑:

res_partner_category_rel:

  • partner_id (many2one)
  • category_id (many2one)

sql postgresql database-design openerp relational-division

1
推荐指数
1
解决办法
1626
查看次数

如何将PHP数组保存到MySQL数据库,以便我可以搜索数据库中的数组?

我正在尝试构建一个可搜索的用户所使用的语言数据库.

例如我可能有

$john = array("english", "french", "spanish");
$jack = array("french", "spanish");
$jill = array("english", "spanish");
Run Code Online (Sandbox Code Playgroud)

我想将它们保存到MySQL数据库中,以便以后可以运行(伪代码)

SELECT * FROM users WHERE spoken_languages = "french" and "spanish"
Run Code Online (Sandbox Code Playgroud)

我知道如果我有speaks_english,speaks_frenchspeaks_spanish列,那么我可以搜索

SELECT * FROM users WHERE speaks_french = "true" and speaks_spanish = "true"
Run Code Online (Sandbox Code Playgroud)

但是每次遇到新语言时添加新列的可扩展性都不是很好.我考虑过像这样的桌子

john | english
john | french
john | spanish
jack | french
jack | spanish
jill | english
jill | spanish
Run Code Online (Sandbox Code Playgroud)

因为至少要回到用户所说的语言,我才能运行

SELECT * FROM spoken_languages WHERE user = "jack"
Run Code Online (Sandbox Code Playgroud)

但是为了搜索讲法语和西班牙语的人,我需要查询所有讲法语的用户,所有说西班牙语的用户然后计算交叉点.这似乎非常低效.

所以我问你,如何保存这些口语语言,以便我可以在不破坏服务器的情况下搜索数据库?

php mysql sql database relational-division

1
推荐指数
1
解决办法
125
查看次数

SQL查询以查找具有特定数量关联的行

使用Postgres我有一个有conversations和的模式conversationUsers.每个conversation都有很多conversationUsers.我希望能够找到具有确切指定数量的对话conversationUsers.换句话说,提供了一个userIds(例如[1, 4, 6])我希望能够找到仅包含那些用户的对话的数组,而不是更多.

到目前为止,我试过这个:

SELECT c."conversationId"
FROM "conversationUsers" c
WHERE c."userId" IN (1, 4)
GROUP BY c."conversationId"
HAVING COUNT(c."userId") = 2;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎也回归了包括这两个用户在内的对话.(例如,如果对话还包括"userId"5 ,则返回结果).

sql postgresql sequelize.js relational-division

1
推荐指数
1
解决办法
138
查看次数

使用SQL获取在"IN"中具有两个值的记录

我需要一个SQL语句来从数据库中提取具有附件标记的那些申请人.如果我想要7或8作为附件标签的aaplicant但是我需要具有这两个标签的申请人,则belowq语句可以正常工作.

select distinct(a.id) from applicant a
join applicantdeployment ad on a.id = ad.applicantid
join ApplicantAttachment at on a.id = at.applicantid
where a.applicanttype = 'TCN/LN' and ad.groundlocation in (4,8,14) and ad.deploymentstatus =1
and ad.trainingdeploymentstatus = 6 and at.tag in (7,8)
Run Code Online (Sandbox Code Playgroud)

例如,从下面的集合我只想要显示ids 7332,7451和7449.

ID Tag
7328 8
7328 8
7332 8
7332 7
7337 7
7449 8
7449 7
7451 8
7453 7
7451 7

谢谢!

sql relational-division

0
推荐指数
1
解决办法
3162
查看次数

查找与所有给定标签相关的电影

我不知道如何表达我的 SQL 问题,所以我会输入一个预期的场景。

电影ID 标签ID
1 1
1 3
1 5
2 1
2 2
2 3
3 1
3 3
3 5
3 7

我想选择至少与所有这些标签有标签关系的 movieId [1,3,5]
所以预期的输出是1,3.

sql postgresql relational-division

-1
推荐指数
1
解决办法
143
查看次数

找出列是否包含每个组的两个不同值

我想选择满足同一列的两个条件的行.下面是表模式.

安全表

Id  RoleId  CompId  SecurityToken       Accesstype
1   1           10           abc        2
2   1           10           xyz        2
3   12          10           abc        2
4   16          12           abc        2
5   16          12           xyz        2
6   30          13           abc        2
7   1           10           efg        2
8   1           10           lmn        0 
Run Code Online (Sandbox Code Playgroud)

我想要"每个RoleID/CompID组合的所有行,其中accesstype = 2,并且有一行包含securitytoken"abc"和包含SecurityToken"xyz"的行用于该角色/ compID组合"

输出应该是

Id  RoleId  CompId  SecurityToken       Accesstype
1   1           10           abc        2
2   1           10           xyz        2
4   16          12           abc        2
5   16          12           xyz        2
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server relational-division

-2
推荐指数
1
解决办法
85
查看次数