次のテーブル構造があると仮定します
DROP TABLE IF EXISTS `members`;
CREATE TABLE `members`
(
m_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT
, m_upgrade TINYINT NOT NULL DEFAULT 0 COMMENT '0 - no upgrade, 1 - possible upgrade'
) ENGINE MyISAM
;
DROP TABLE IF EXISTS `upgrade_reasons`;
CREATE TABLE `upgrade_reasons`
(
ur_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT
, ur_by INT NOT NULL COMMENT 'Who upgraded me'
, ur_for INT NOT NULL COMMENT 'who this upgrade is for'
, ur_vote TINYINT DEFAULT NULL COMMENT 'NULL - not yet voted, 0 - do not upgrade, 1 - upgrade'
, ur_reason VARCHAR(255) DEFAULT NULL COMMENT 'The reason for marking as upgrade / do not upgrade'
, UNIQUE INDEX ur_idx(ur_by, ur_for)
) ENGINE MyISAM
;
INSERT INTO `members`(m_id, m_upgrade)
VALUES
(1, 0)
, (2, 0)
, (3, 0)
, (4, 1)
, (5, 1)
;
INSERT INTO `upgrade_reasons`(ur_by, ur_for, ur_vote, ur_reason)
VALUES
(2, 4, 1, 'Vote for')
, (3, 4, 0, 'vote against')
, (3, 5, 0, 'vote against')
;
メンバー1については、次のような結果が見たいです。
+ ----- + ----------- + ------- + -------- + --------- + ---- --------- + | m_id | m_upgrade | ur_by | ur_for | ur_vote | ur_reason | + ----- + ----------- + ------- + -------- + --------- + ---- --------- + | 4 | 1 | NULL | 4 | NULL | NULL | + ----- + ----------- + ------- + -------- + --------- + ---- --------- + | 5 | 1 | NULL | 5 | NULL | NULL | + ----- + ----------- + ------- + -------- + --------- + ---- --------- +
メンバー2については、次のような結果が見たいです。
+ ----- + ----------- + ------- + -------- + --------- + ---- --------- + | m_id | m_upgrade | ur_by | ur_for | ur_vote | ur_reason | + ----- + ----------- + ------- + -------- + --------- + ---- --------- + | 4 | 1 | 2 | 4 | 1 | に投票する| + ----- + ----------- + ------- + -------- + --------- + ---- --------- + | 5 | 1 | NULL | 5 | NULL | NULL | + ----- + ----------- + ------- + -------- + --------- + ---- --------- +
メンバー3の場合、次のような結果が見たいです。
+ ----- + ----------- + ------- + -------- + --------- + ---- --------- + | m_id | m_upgrade | ur_by | ur_for | ur_vote | ur_reason | + ----- + ----------- + ------- + -------- + --------- + ---- --------- + | 4 | 1 | 3 | 4 | 0 | 反対票を投じる| + ----- + ----------- + ------- + -------- + --------- + ---- --------- + | 5 | 1 | 3 | 5 | 0 | 反対票を投じる| + ----- + ----------- + ------- + -------- + --------- + ---- --------- +
これまでのところ、どこから始めればよいかわからないため、(StackOverflowを検索する以外は)何も試していません。
NB。これはPHPでコード化されたWebサイトであるため、純粋なSQLソリューションがない場合は、PHPで実行できます。
前もって感謝します