gpt4 book ai didi

php - 如何在多个表中使用group_contat()函数?

转载 作者:行者123 更新时间:2023-11-29 19:46:48 26 4
gpt4 key购买 nike

我有想要合并的记录,但它们位于不同的列中。我知道 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 1doc_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/

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