我正在查詢到DBMYSQL一個一對多的關係推到數組
$query="SELECT com.id, com.name, ctx.LastName, ctx.FirstName, com.company_phone,addr.City, addr.Street ";
$query.="FROM Connections as con ";
$query.="LEFT JOIN Companies as com on con.company_id = com.id ";
$query.="LEFT JOIN Contacts as ctx on con.contact_id = ctx.id ";
$query.="LEFT JOIN addresses as addr on addr.id = com.Legal_address ";
if($value['db']=='companies') $query.="WHERE LOWER(com.".$value['model'].") RLIKE LOWER('".$value['val']."')";
else if($value['db']=='contacts') $query.="WHERE LOWER(ctx.FirstName) RLIKE LOWER('".$value['val']."') OR LOWER(ctx.LastName) RLIKE LOWER('".$value['val']."')";
else if($value['db']=='addresses') $query.="WHERE LOWER(addr.City) RLIKE LOWER('".$value['val']."') OR LOWER(addr.Street) RLIKE LOWER('".$value['val']."')";
,然後將結果發送回客戶端。因此,我可以看到,例如:
[
{
id:1,
name: google,
contact: Smith,
....
},
{
id:1,
name: google,
contact: Black,
....
},
{
id:2,
name: microsoft,
contact: Walker,
....
}
....
但我想看看沒有重複的行,但陣列,其中有一個一對多的關係。如第二個例子:
[
{
id:1,
name: google,
contact: [Smith, Black],
....
},
{
id:2,
name: microsoft,
contact: Walker,
....
}
....
我的SQL知識非常糟糕。我已經被告知WHERE
+ JOIN
不爽。所以有可能改變我的查詢,以便它會像第二個例子。
P.S.我向客戶端發送響應時使用json格式的結構編寫的兩個數組。
此鏈接可能會幫助你 - [MySQL Group_Concat](https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat) –
在你的查詢中你需要在末尾添加'group by com.id'並在選擇部分添加'group_concat(ctx.LastName)'(假定contact是你的姓氏列) –
我已經把這個回答了,你可以查看[這裏] (https://stackoverflow.com/a/44698338/2679536) –