gpt4 book ai didi

php - 是否有可能查询结果为 "concatenate"?

转载 作者:行者123 更新时间:2023-11-29 08:55:51 25 4
gpt4 key购买 nike

我正在实现一个基于作者的图书搜索功能。我应该返回一个查询结果,其中包含查询作者撰写的所有书籍。但是,对某些作者姓名的查询可能会返回多个结果(例如,查询“Smith, W”可能会匹配“Smith, Wesson”和“Smith, Will”)。

所以,我的问题是如何“连接”这些不同作者写的所有书籍。如果我不考虑多个作者匹配查询的可能性,我会这样做(用伪代码,因为我的真实代码现在非常困惑):

  • 在作者表中搜索作者
  • 与查询匹配
  • 获取作者的authorid
  • 在图书表中搜索具有相同authorid的图书​​记录

但是,由于可能有多个作者,我想到的是这样的:

// search author table for authors matching the query

foreach(author_match as am){
// search book table for book records with authorid=am.authorid
// Is there such thing as this? :\
book_results += all the rows returned by previous query
}
return book_results;

我在 PHP(使用 CodeIgniter 框架)和 MySQL 中执行此操作。有没有任何函数/运算符可以让我做到这一点?是的,我尝试过 +=,即使我对它没有太多期望,但结果却很丑陋。

再次,我对伪代码表示歉意。我会尝试清理我的代码并尽快编辑,但如果在此之前得到答案,那就太棒了。谢谢。

最佳答案

我同意 Michael 的观点,看来您需要 INNER JOINLEFT JOIN

您说您正在使用 Codeigniter,所以这里是一个 Codeigniter 特定示例:

$this->db->select('author.*, 
book.*');
$this->db->from('authors');
$this->db->join('books', 'books.authorid = authors.id', 'left');
$this->db->where('authors.id', $the_author_id);

另请参阅:

关于php - 是否有可能查询结果为 "concatenate"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10018455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com