通过连接从 2 个表中获取数据

Posted

技术标签:

【中文标题】通过连接从 2 个表中获取数据【英文标题】:Get data from 2 tables with a join 【发布时间】:2021-10-16 14:19:43 【问题描述】:

我有这两张桌子:keywordkeyword_translated

keyword
id
name

keyword_translated
id
translation
keyword_id

我想得到所有keyword,与keyword_translated无关。最后我想得到类似的东西:

[
  [
      keyword_id => 1,
      keyword_name => 'firstKeyword'
      keyword_translated_id => 1, // if exist relation between `keyword` and `keyword_translated`
      keyword_translated_translation => 'This is translation of firstKeyword' // if exist relation between `keyword` and `keyword_translated`
  ],
  [
      keyword_id => 2,
      keyword_name => 'secondKeyword'
      keyword_translated_id => null, // if didn't exist relation between `keyword` and `keyword_translated`
      keyword_translated_translation => null // if didn't exist relation between `keyword` and `keyword_translated`
  ],
]

我试过这样:

$keywords = DB::table('keywords')
        ->join('keywords_translated', 'keywords.id', '=', 'keywords_translated.keyword_id')
        ->select('keywords.*', 'keywords_translated.*')
        ->get();

但我有空数据。我可以尝试什么来解决这个问题?

【问题讨论】:

看起来DB::table('keywords') 上有一个类型。 keywords -> keyword。另外,听起来您想使用leftJoin 而不是join 请尽量不要为你的英语道歉——你已经在你的问题中添加了 40 次,这无助于让问题更清晰。同样,无需添加“谢谢”(或可憎的“thx”),原因大致相同 - 社区更喜欢简洁和技术性的文字。 请注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,聊天材料和缩写 txtspk,恳求,你多久了被卡住、投票建议、元评论等。只需解释您的问题,并展示您尝试过的内容、预期的内容以及实际发生的情况。 【参考方案1】:

保存此图像以供将来参考。

【讨论】:

【参考方案2】:

像这样使用leftjoin 而不是join

$keywords = DB::table('keywords')
        ->leftjoin('keywords_translated', 'keywords.id', '=','keywords_translated.keyword_id')
        ->select(
           'keywords.id as keyword_id',
           'keywords.name as keyword_name',
           'keyword_translated.id as keyword_translated_id',
           'keyword_translated.translation as keyword_translated_translation',
        )
        ->get();

【讨论】:

以上是关于通过连接从 2 个表中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

查询从 3 个表中获取数据,主表和总和列从彼此 2 个表中获取

Laravel 5.3 查询从通过外键连接的 4 个表中获取结果

如何通过匹配一些冗余字段从 3 个表中获取唯一数据?

如何从sql数据库中的2个表中获取多列数据?

从 2 个表中获取数据到 excel 表中

如何根据搜索关键字 rails 从 2 个表中获取数据