查询后合并行

时间:2016-01-12 13:18:36

标签: php mysql sql database

我在组合多行时遇到了一些问题。

目前有此查询:

SELECT TBLAgenda.ArtikelID, TBLArtikelen.ID, TBLArtikelen.Artikel,TBLAgenda.Plaats, TBLAgendaDatum.Datum, TBLAgendaDatum.Sessie
FROM TBLAgenda
INNER JOIN TBLArtikelen ON TBLAgenda.ArtikelID = TBLArtikelen.ID 
INNER JOIN TBLAgendaDatum ON TBLAgenda.AgendaID = TBLAgendaDatum.AgendaID

现在,每个artikel都在某个日期的某个地方供应。 artikel和Plaats的组合是关键。一个artikel用于不同的'

我需要的是一种用Artikel,Plaats和所有日期显示的方式。

目前这是结果的一部分:

Windows 10 in TORHOUT op 2016-01-05 00:00:00
Bestandsbeheer in BRUGGE op 2016-01-07 00:00:00
Windows 10 in TORHOUT op 2016-01-12 00:00:00
Windows 10 in TORHOUT op 2016-01-19 00:00:00
Windows 10 in TORHOUT op 2016-01-26 00:00:00
Windows 10 in TORHOUT op 2016-02-02 00:00:00
Bestandsbeheer in BRUGGE op 2016-01-14 00:00:00
Bestandsbeheer in BRUGGE op 2016-01-21 00:00:00
Android Smartphone/Tablet in OOSTENDE op 2016-01-01 00:00:00
Android Smartphone/Tablet in OOSTENDE op 2016-01-12 00:00:00
Android Smartphone/Tablet in OOSTENDE op 2016-01-19 00:00:00
Android Smartphone/Tablet in OOSTENDE op 2016-01-26 00:00:00
Android Smartphone/Tablet in OOSTENDE op 2016-02-02 00:00:00
Android Smartphone/Tablet in BRUGGE op 2016-01-08 00:00:00
Android Smartphone/Tablet in BRUGGE op 2016-01-15 00:00:00
Android Smartphone/Tablet in BRUGGE op 2016-01-22 00:00:00
Android Smartphone/Tablet in BRUGGE op 2016-01-29 00:00:00
Android Smartphone/Tablet in BRUGGE op 2016-01-05 00:00:00
Windows 10 in GENT op 2016-01-20 00:00:00
Windows 10 in KORTRIJK op 2016-01-21 00:00:00
Windows 10 in KORTRIJK op 2016-01-28 00:00:00
Windows 10 in KORTRIJK op 2016-02-04 00:00:00
Windows 10 in BRUGGE op 2016-01-28 00:00:00
Windows 10 in BRUGGE op 2016-02-04 00:00:00
WindowsPhone in OOSTENDE op 2016-02-16 00:00:00
WindowsPhone in OOSTENDE op 2016-02-23 00:00:00
WindowsPhone in OOSTENDE op 2016-03-01 00:00:00
WindowsPhone in OOSTENDE op 2016-03-08 00:00:00

所以我需要显示: Windows 10 - Torhout - 2016/01 / 05,2016 / 01 / 12,2016 / 01 / 19,2016 / 01 / 26,2016 / 02/02 Bestandsbeheer - 布鲁日 - 2016/01/14,2016 / 01/21 .......

1 个答案:

答案 0 :(得分:1)

我认为您只想要group_concat()group by

SELECT ag.ArtikelID, ag.Plaats,
       GROUP_CONCAT(d.Datum) as datums
FROM TBLAgenda ag INNER JOIN
     TBLArtikelen ar ON ag.ArtikelID = ar.ID INNER JOIN
     TBLAgendaDatum d
     ON ag.AgendaID = d.AgendaID
GROUP BY ag.ArtikelID, ag.Plaats;

另请注意,使用表别名可以使查询更容易编写和读取。

相关问题