【问题标题】:Merge two table columns without join query [closed]在没有连接查询的情况下合并两个表列[关闭]
【发布时间】:2021-11-12 02:38:14
【问题描述】:

我正在 Laravel 中制作项目。我有多个表,其中两个表是书籍和作者。 作者有专栏:

-id
 -name
 -all_books(',' separated values)
 -recent_books
 Books has columns :
 -id
 -author_id(foreign key(from author table))
 -title
 -genre
 -pages

现在,我想获取书籍的所有数据。但我想显示作者姓名而不是 author_id 这怎么可能。加入将迫使我提出条件。所以不想这样做。 任何建议将不胜感激。

【问题讨论】:

  • JOIN 会强制你使用条件是什么意思?
  • 可以无条件入桌吗?
  • 如果要显示另一个表中对应的数据,需要告诉mysql如何组合这两个表。从下面的答案中可以看出,没有连接也是可能的,但是相关的子查询也有一个“条件”来获取正确的名称。

标签: mysql join union


【解决方案1】:

由于作者 ID 是唯一的,因此不可能有多个作者姓名具有相同的 ID。因此,相关子查询将始终返回单个值。所以不需要 JOIN。

SELECT b.id
     , (SELECT name FROM author WHERE id = b.author_id) author_name
     , b.title
     , b.genre
     , b.pages
FROM books b

【讨论】:

  • 我如何在 laravel 中做到这一点?
  • 嗨@Milanjotva 正如你提到的mysql标签,我正在回答这个问题。我不是 laravel 专家。但是您可以将 mysql 代码从 jjlabajo.github.io/SQLtoEloquent "Laravel code" 转换为 laravel : DB::table("books b") ->select("b.id", "(select name from author where id = b.author_id) author_name", "b.title", "b.genre", "b.pages") ->get();
  • 请检查这个。如果我的回答对您有帮助,请将其标记为已接受并点赞,这样任何人都可以毫无疑问地选择它。
猜你喜欢
  • 2012-03-25
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
相关资源
最近更新 更多