php / sql连接多个字段的表

时间:2015-06-25 01:01:17

标签: php sql

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

  1. 文章标题(作者1,作者2,作者3),期刊名称,发布日期。
  2. 我做了两张桌子。一个包含paper_id,author_id,paper_name,journal_name,date。第二个包含author_id,author_firstname,author_lastname。

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

    author_id:1
    author_firstname:约翰
    author_lastname:史密斯

    author_id:1
    author_firstname:bob
    author_lastname:托马斯

    我想打印一下:论文名称(约翰史密斯,鲍勃托马斯),期刊名称,发表日期。

    我已经尝试加入author_id,但它输出相同的论文两次(因为我有两位作者身份证1.我需要建议我应该如何更改表格或以不同的方式加入它。什么不是。任何帮助将不胜感激,谢谢。我也是一名初学程序员

2 个答案:

答案 0 :(得分:0)

不知道我是否收到你的问题,但你有两张桌子,你的查询就像是    SELECT table1.id,columnnames FROM table1 INNER JOIN table2 ON table1.id = table2.id

答案 1 :(得分:0)

我认为正确的策略是在每篇论文中使用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