1

php-mysql クエリの理解に問題があります。この種のクエリを使用して、すべての人 (inco_person) に電子メール (inco_phone) と電話番号 (inco_email) を割り当てて出力しようとします。

しかし、1 つの個人 ID に対して複数の電話番号と電子メール アドレスがある場合はどうなるでしょうか。

これで、メールと電話番号のセットが異なる 1 人のユーザーに対して 4 行が取得されます。複数のフィールドがある場合、特定のフィールドを集約する方法はありますか?

$gsf = mysqli_query( $connector2 ,"SELECT * FROM inco_person
LEFT JOIN inco_person_position ON inco_person_position.person_id=inco_person.personid
LEFT JOIN inco_position ON inco_position.positionid=inco_person_position.position_id
LEFT JOIN inco_basic ON inco_basic.basicid=inco_person_position.company_id
LEFT JOIN inco_phone ON inco_phone.pp_id=inco_person_position.ppid
LEFT JOIN inco_email ON inco_email.pp_id=inco_person_position.ppid
ORDER BY inco_person.personid") or die(mysqli_error($connector2));

結果:

ID Firstname   Lastname    Position      E-Mail       Phone

1  Jacek       Kowalski    President    68-3284099    dyrektor@abc.com

1  Jacek       Kowalski    President    661320993    j.kowalski@abc.com

1  Jacek       Kowalski    President    661320993    dyrektor@abc.com

1  Jacek       Kowalski    President    68-3284099    j.kowalski@abc.com
4

2 に答える 2

0

あなたは使用することができGROUP BYますGROUP_CONCAT

SELECT inco_person.personid, GROUP_CONCAT(inco_email.email SEPARATOR ' ') FROM inco_person
LEFT JOIN inco_person_position ON inco_person_position.person_id=inco_person.personid
LEFT JOIN inco_position ON inco_position.positionid=inco_person_position.position_id
LEFT JOIN inco_basic ON inco_basic.basicid=inco_person_position.company_id
LEFT JOIN inco_phone ON inco_phone.pp_id=inco_person_position.ppid
LEFT JOIN inco_email ON inco_email.pp_id=inco_person_position.ppid
GROUP BY inco_person_position.person_id ORDER BY inco_person.personid
于 2013-05-13T13:32:37.120 に答える
0

を追加して、 GROUPINGgroup by inco_person.personid経由で電話番号を読み取るだけですgroup_concat

于 2013-05-13T13:31:15.513 に答える