作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有想要合并的记录,但它们位于不同的列中。我知道 group_contat()
可以,但我不知道插入它。
这是我的 SQL 查询:
select * from
info join crew_documents_table on info.id = crew_documents_table.document_crew_id
join crew_rank on info.crew_rank = crew_rank.crew_rank_id where crew_rank in ('1','2','3','4')
and crew_status = '$crew_status'
and vessel = '$vessel_name' and document_status = 'ACTIVE'
我期望这样的结果:http://imgur.com/a/82MYc
但是它为每条记录提供了很多行
编辑
这是我的表格示例:
表格信息:
id | full_name |crew_rank
-------------|-------------|------------
1 |ADRIAN PASCUA|10
-------------|-------------|------------
4 |STEPH PASCUA | 10
表crew_documents_table
doc_type | doc_number | date_issue | document_crew_id
-----------|----------- |-------------|-----------------
1 | 123456 | 2016/11/11 | 1
-----------|----------- |-------------|-----------------
1 | 642312 | 2016/11/01 | 4
-----------|----------- |-------------|-----------------
2 | 123456 | 2016/11/11 | 1
-----------|----------- |-------------|-----------------
2 | 642312 | 2016/11/01 | 4
我需要将 doc_type 1
和 doc_type_2
列与相同的 document_crew_id
结合起来
最佳答案
也许您可以使用带有组 concat() 的动态表的内部联接,这样您就可以获得所有列以及分组值
select *, t.grouped
from info
join crew_documents_table on info.id = crew_documents_table.document_crew_id
join crew_rank on info.crew_rank = crew_rank.crew_rank_id
join (
select document_crew_id, group_concat(doc_type) as grouped
from crew_documents_table
group by document_crew_id
) t on t.document_crew_id = info.id
where crew_rank in ('1','2','3','4')
and crew_status = '$crew_status'
在您的查询中,您使用的是 select *。这与按值获取分组的需要形成对比
你可以尝试这个来检查
select distinct info.id, t.grouped
from info
join crew_documents_table on info.id = crew_documents_table.document_crew_id
oin crew_rank on info.crew_rank = crew_rank.crew_rank_id
join (
select document_crew_id, group_concat(doc_type ) as grouped
from crew_documents_table
group by document_crew_id
) t on t.document_crew_id = info.id
where crew_rank in ('1','2','3','4')
and crew_status = '$crew_status'
当您需要按值分组时,您有两种可能性,或者像我的第一个答案一样在动态表中加入分组依据,或者,如果每个不同的值并不重要,您应该使用分组依据和减少主选择的结果(假)聚合函数
关于php - 如何在多个表中使用group_contat()函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40914237/
我是一名优秀的程序员,十分优秀!