私は3つのテーブルを持っています。 1つはクライアントのデータを持つメインテーブル、1つはビジネスタイプリスト、3つ目はクライアントのIDと関連するすべてのビジネスとの関係です。mysqlのプライマリテーブルから1つのクエリでリレーションテーブルの値を連結する方法
クライアントテーブル、すなわちClients
:
id | client | address | phone
----------------------------------
1 | John Doe | Address1 | Phone 1
2 | Jane Doe | Address2 | Phone 2
3 | Jack Doe | Address3 | Phone 3
企業タイプテーブル、すなわちBusinesses
:
id | business
-----------------
1 | Electrician
2 | Plumber
3 | Home remodel
4 | Bathrooms
そして、関係テーブルには、すなわちRelations
、どのビジネスに関連付けられているクライアントと言って:
c_id | b_id
-----------
1 | 3
1 | 4
2 | 2
2 | 4
3 | 1
3 | 2
3 | 4
私はちょうどconcaが必要ですtenated事業名は、このように、各クライアントのために一列に選択される:
結果:
id | client | address | phone | business
--------------------------------------------------------------------
1 | John Doe | Address1 | Phone 1 | Home remodel, Bathrooms
2 | Jane Doe | Address2 | Phone 2 | Plumber, Bathrooms
3 | Jack Doe | Address3 | Phone 3 | Electrician, Plumber, Bathrooms
は、単一のクエリを使用していることは可能ですか?私は多くのconcatとgroup_concatメソッドを試しましたが失敗しました。私は本当に任意のアイデアを感謝します。
ような何かああ、私も内側のクエリでは、クライアント、住所、電話でグループ化された可能性があります。ありがとう! – Utsav
これは動作していますが、非常にゆっくりです。私のクライアントテーブルは> 500k行を持ち、ビジネスは約600です。イベントをクライアントに限定してwhere句を4つの結果に制限すると、2番目、2番目、5番目の半分になります。何かが最適化されていませんが、結果は間違いなく適切です。 –
起こるかどうかわかりません。私は実際にはIDだけでグループ化しています。この例よりも多くの列があり、idだけが関係しており、索引付けされています。 –