私が住んでいる複合施設には、わずか100人以上の住人の小さなMySQLデータベースがあります。単純化するために、ユニット番号、姓、名、電話番号、電子メールアドレスが含まれています。MySQLの選択結果で重複した行をインテリジェントに結合する
UNIT,SURNAME,FIRST_NAME,PHONE
1,Evans,Bob,12345
2,Smith,Jane,23456
2,Smith,Jim,23456
3,Jones,Joe,45678
4,Jones,Jason,98765
5,Wong,Bill,95147
5,Lee,Jane,95147
上記のデータを要約すると::
ここではいくつかのサンプルデータです。..電子メールアドレスは、質問とは無関係ですが、同じ単位で同じ姓を持つ人々が異なるエントリを持っているなぜ彼らは説明します
- ボブ・エヴァンスジェーンジム・スミスは、同じユニットで一緒に住んでいるので、同じ電話番号(ただし、異なる電子メールアドレス、separatを持って&
- 、彼自身に住んでいます電子メールアドレス
- ジョー・ジョーンズとジェイソン・ジョーンズは、同じ姓を共有しているにもかかわらず、異なるユニットに住んでおり、(明らかに)電話番号が異なります。
- ビルウォンとジェーンリーは一緒に住んでいて、異なる姓があります。
同じ電話番号を共有する同じ姓の2人を知的に認識する電話リスト(姓でソートされたもの)を生成する選択クエリを作成したいとします(同じユニット番号を共有するという事実は私は実際のMySQLクエリとは無関係だと思います)、結果に1行にまとめると同時に、別の姓の人に同じ電話番号を分けたままにします。言い換えれば、上記のデータの選択の結果は次のようになります、
SELECT unit, surname, phone,
group_concat(first_name order by first_name SEPARATOR ' & ') AS name
FROM owners
GROUP BY surname;
しかしこと:
UNIT,SURNAME,FIRST_NAME,PHONE
1,Evans,Bob,12345
4,Jones,Jason,98765
3,Jones,Joe,45678
5,Lee,Jane,95147
2,Smith,Jane & Jim,23456
5,Wong,Bill,95147
Someresearchはほとんど私が欲しいものを行い、次のクエリに私を導きましたジョー・ジョーンズの電話とユニット番号の下ジョー・ジョーンズとジェイソン・ジョーンズを兼ね備え:
3,Jones,Joe & Jason,45678
私はジョー・ジョーンズとジェイソン・ジョーンズを保つために、そのクエリを絞り込むしたいと思いれます自分の電話番号で自分の別のエントリ。それが助けになると、各行に主キー "id"列があります。
ご意見やご指摘をお待ちしております。どうもありがとう。
クレイグ
ありがとうakrys、。私は、実際のリストを生成するために使用するスクリプトで正しい順序で列を取得します。 – CraigH