0

つまり、基本的な問題は次のとおりです。

まず、私は誰かに宿題をするように頼んでいるのではなく、正しい方向に向けて微調整をしてもらいたいだけです。

練習用の名前と連絡先データを含む 2 つのテーブルがあります。これらのテーブルを と と
呼びましょう。 のテーブルを作成:peoplecontact

people

CREATE TABLE `people` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fname` tinytext,
`mname` tinytext,
`lname` tinytext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

のテーブルを作成contact:

CREATE TABLE `contact` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`person_id` int(10) unsigned NOT NULL DEFAULT '0',
`tel_home` tinytext,
`tel_work` tinytext,
`tel_mob` tinytext,
`email ` text,
PRIMARY KEY (`id`,`person_id`),
KEY `fk_contact` (`person_id`),
CONSTRAINT `fk_contact` FOREIGN KEY (`person_id`) REFERENCES `people` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

各人の連絡先情報を取得するとき、私が使用するクエリは次のとおりです。
SELECT p.id, CONCAT_WS(' ',p.fname,p.mname,p.lname) name, c.tel_home, c.tel_work, c.tel_mob, c.email;

これは、次のような応答のみを作成します。

+----+----------+---------------------+----------+ ------+---------------------+
| | ID | 名前 | tel_home | tel_work | tel_mob | 電子メール |
+----+----------+---------------------+----------+ ------+---------------------+
| | 1 | ジェーン ドウ | 1500 (xxx-xxx 1500) | ヌル | ヌル | janedoe@example.com |
| | 2 | ジョン・ドウ | 1502 (xxx-xxx 1502) | ヌル | ヌル | ヌル |
| | 2 | ジョン・ドウ | ヌル | ヌル | ヌル | johndoe@example.com |
+----+----------+---------------------+----------+ ------+---------------------+

このビューの問題は、行 1 と 2 (0 から数えて) が 1 つの行にグループ化される可能性があることです。この「きれいではない」結果はデー​​タの破損によるものですが、マルチノード データベース環境で発生する可能性があります。

目標とする結果は次のようになります

+----+----------+---------------------+----------+ ------+---------------------+
| | ID | 名前 | tel_home | tel_work | tel_mob | 電子メール |
+----+----------+---------------------+----------+ ------+---------------------+
| | 1 | ジェーン ドウ | 1500 (xxx-xxx 1500) | ヌル | ヌル | janedoe@example.com |
| | 2 | ジョン・ドウ | 1502 (xxx-xxx 1502) | ヌル | ヌル | johndoe@example.com |
+----+----------+---------------------+----------+ ------+---------------------+

有効なデータがまだ表示されている場合に、同じidとを持つ行がグループ化されている場所。 補足: innodb_version: 5.5.32 バージョン: 5.5.32-0ubuntu-.12.04.1-log version_compile_os: debian_linux-gnuname




4

1 に答える 1