繁体   English   中英

php / sql连接具有多个字段的表

[英]php/sql joining tables with multiple fields

我正在尝试将数据库中的信息回显到网页上。 该页面应该有大量的文章出版物,其中包括标题,作者,期刊名称(如果适用),发布日期。 例如:

  1. 文章标题(作者1,作者2,作者3),期刊名称,出版日期。

我做了两张桌子。 其中一个包含paper_id,author_id,paper_name,journal_name,日期。 第二个包含author_id,author_firstname,author_lastname。

我正在努力的部分是输出多个作者。 在第二张表中,对于第一篇论文,我有以下内容

author_id:1
作者的名字:约翰
作者的姓氏:史密斯

author_id:1
author_firstname:鲍勃
author_lastname:托马斯

我要打印此文件:论文名称(包括约翰·史密斯,鲍勃·托马斯),期刊名称,出版日期。

我已经尝试加入author_id,但是它输出两次相同的论文(因为我有两位ID为1的作者。我需要有关如何更改表或以不同的方式加入表的建议,没有其他建议。感谢您的帮助。我也是初学者

不知道我是否收到您的问题,但是您有两个表,您的查询将类似于SELECT table1.id,列名FROM table1 INNER JOIN table2 ON table1.id = table2.id

我相信正确的策略是在每篇论文上使用GROUP_CONCAT以获得逗号分隔的作者列表。 作为一个说明,每个组在下面具有一定的查询paper_id 将有相同的价值观paper_namejournal_namedate 我包括paper_id以外的列,以便它们在SELECT子句中可用。

SELECT t1.paper_name,
    GROUP_CONCAT(CONCAT(t2.author_lastname, ', ', t2.author_firstname)
    SEPARATOR ' '),
    t1.journal_name, t1.date
FROM table1 t1 INNER JOIN table2 t2
ON t1.author_id = t2.author_id
GROUP BY t1.paper_id, t1.paper_name, t1.journal_name, t1.date

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM