クエリについてサポートが必要です。データベースに2つのテーブル、連絡先、タスクがあります。
mysql> describe contacts;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| contact_id | int(11) | NO | PRI | NULL | auto_increment |
| last_name | varchar(100) | YES | | NULL | |
| first_name | varchar(100) | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
| phone | varchar(20) | YES | | NULL | |
| school_id | varchar(12) | NO | | NULL | |
| access | char(1) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
mysql> describe tasks;
+-------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------------+
| task_id | int(11) | NO | PRI | NULL | auto_increment |
| task_name | varchar(125) | YES | | NULL | |
| task_date | date | YES | | NULL | |
| task_description | text | YES | | NULL | |
| contact_id1 | int(11) | YES | | NULL | |
| contact_id2 | int(11) | YES | | NULL | |
| contact_id3 | int(11) | YES | | NULL | |
| contact_id4 | int(11) | YES | | NULL | |
| contact_id5 | int(11) | YES | | NULL | |
| contact_id6 | int(11) | YES | | NULL | |
| completed | char(1) | YES | | NULL | |
+-------------------+--------------+------+-----+---------+----------------+
タスクテーブルから情報を取得したいのですが、contact_id1-contact_id6を一致するcontact_idのいくつかのフィールドに置き換えたいと思います。私はネストされたselectステートメントをいじっていますが、これは機能しますが、非常に面倒です。これを行うには、もっとクリーンな方法が必要なようです。私はこれでいくつか持っていると思いました、
SELECT tasks.task_id, tasks.task_name, tasks.reminder_time, tasks.reminder_interval, CONCAT (contact_1.first_name, " ", contact_1.last_name) as contact_1_name, CONCAT(contact_2.first_name, contact_2.last_name) as contact_2_name, CONCAT(contact_3.first_name, contact_3.last_name) as contact_3_name
FROM tasks
JOIN contacts contact_1 ON tasks.contact_id1 = contact_1.contact_id
JOIN contacts contact_2 ON tasks.contact_id2 = contact_2.contact_id
JOIN contacts contact_3 ON tasks.contact_id3 = contact_3.contact_id
しかし、ここでの私の問題は、contact_id1-contact_id6の値のいずれかが0の値を持っているタスクを表示していないことです。これは、contact_idが設定されていない場合のデフォルト値です。
あなたが提供できるどんな助けも素晴らしいでしょう。