之前曾有人问过这个问题,但从未真正回答过(至少我想这样做)。 我的数据库中有三个表, threadsresponsesvotes 我需要他们仅共享id字段。 所以我可以做类似的事情

SELECT * FROM threads AS t JOIN responses AS r JOIN votes AS v
WHERE id = 15

并且只会检索ID为15的响应或(唯一)投票记录的线程。

有没有可能在不创建额外表的情况下执行此操作的方法? 我不是在问这是否是个好主意(可能不是),但是否有可能以及如何做。

===============>>#1 票数:1

如果我理解正确,那么您想获取线程,响应或以id = 5进行投票。在MySQL中没有机会在表之间提供id字段唯一性(即,防止创建响应并以相同的id值进行投票),但是您可以在您的应用中做到这一点。

您可以通过以下方式获取所需的行:

SELECT id, name, 'thread' AS `type` FROM threads WHERE id=5
UNION
SELECT id, name, 'response' AS `type` FROM responses WHERE id=5
UNION 
SELECT id, name, 'vote' AS `type` FROM votes WHERE id=5

===============>>#2 票数:0 已采纳

您的选择将引发错误,因为where子句中的id字段不明确。 我想所有这三个表中都有一个id字段。

SELECT * FROM threads AS t JOIN responses AS r JOIN votes AS v
WHERE id = 15

因此,即使id字段在这些字段之间“以某种方式共享”,您也必须使where子句明确:

SELECT * FROM threads AS t JOIN responses AS r JOIN votes AS v
WHERE t.id = 15

此外,我假设线程和响应具有多对一关系,这意味着可以有多个响应对应一个线程。 这意味着responses表将具有一个thread_id字段。 responses表中的id字段不能具有与相应thread记录中的id字段相同的值,因为id字段在两个表中都必须是唯一的。

responsesvotes之间的关系采用相同的逻辑(单个响应将具有很多投票)。

因此, 我得出结论,无法在这三个表之间共享id字段

  ask by federico-t translate from so

未解决问题?本站智能推荐:

3回复

MySQL:将值检索到不同的列中

请看下面的代码。 在这里,如果Transactions.Transaction_Amount > 0,那么我需要在“添加”列中显示此值,否则需要在“ Encashment”列中显示此值。 但是我的代码生成错误如下。 我该如何解决?
1回复

在mysql中按时间间隔标记列

嗨,我有点卡在这里。 我正在尝试为名为“绿色”,“黄色”和“红色”的合同创建3个标签。 标签由公式contractdate-curdate()标识。 -如果距离超过90天,则显示绿色。 -黄色-如果结束日期在31至89天之间-如果结束日期为30天或更短则为红色 我需要一种方法来为L
1回复

基于MySQL更新表的DATETIME列

我有以下表格: cash_billings_bills_articles和articles_pricehistory 我需要根据他的基准日期中的articles_pricehistory更新cashbillingbillarticle_cost列。 逻辑是选择所有历史记录日期
3回复

在MySQL的一个结果集中从多个表获取数据

在我正在使用的小型图书馆/研究数据库应用程序中,我有一个页面,用户可以在其中查看他们提交的所有资源。 我有用于不同资源的三个表格-书籍,期刊和会议。 这些表如下所示: 我想做的很简单,但是似乎找不到一个简单的SQL命令。 在堆栈溢出和Google上搜索“从多个表中选择数
4回复

MySQL查询多个列上的多个JOIN两个表

我有一个mysql查询,它从2个表(“属性”和“要约”)进行交互。 “要约”表可以通过用唯一代码或属性所在的县或地区引用特定记录来匹配属性表中的记录。 这是我的查询示例... 在要约表中,有3列the_property / the_county / the region对于将
1回复

如何使SQL查询选择唯一的ID并按日期在列中排列它们? [重复]

这个问题已经在这里有了答案: MySQL数据透视表 8答案 大家好! 您能帮我进行SQL查询以选择唯一的ID并将它们按日期从01.01.2018到04.01.2018排列在列中吗? 在我的表中登录名是varchar类型。 我进行这样的查询,但它不起作用
2回复

如何从多个表中选择具有可变条件的数据| MySQL的

我在数据库中有两个表来存储客户端基本信息(名称,位置,电话号码)和另一个表来存储客户端相关的事务(date_sub,profile_sub,isPaid,date_exp,client_id),我有一个html表来查看客户端基本信息和事务如果可用,我的问题是我无法同时从表internetClie
2回复

mysql | 从表中选择月份和年份不是当前或员工编号的记录

我有这个查询 实际上,我试图仅获取ID未在1,2中列出的员工,并且如果employee_id存在1或2则月份和年份不应为该特定员工的当前月份和年份 SQL小提琴 我不确定这样做是否正确。
3回复

选择并加入到MySQL中的表

我有用户表和message_threads表。 Ali希望从thread_message获取其Id在ToUserId或FromUserId之一中的所有记录,并获取其他用户对的Name(在此示例中为Mahdi )。 请求记录时,Ali发送其Id 。 这个问题的SELECT & JO
1回复

从一个表中选择所有行,只要该ID不代表第二个表中的null

我有一个电影叫表包含两列,id_pelicula(电影ID)和TITULO(电影的名字),它具有以下行。 (电影桌) 接下来,我有第二张表称为借项 ,其中包含借用某些电影的日期和电影归还的日期。 如果电影已借出但未归还,则归还日期为NULL。 该表具有的列为id_bitac