首页 > 解决方案 > PHP Select Query 用于比较来自不同 mysql 表的 2 个值(如果它们匹配)

问题描述

PHP新手得到了一个测验。在 db 15 Questions/15Answers 中有一个答案的输入表单,该表单将发送到 mysql 表中。并且在数据库中还有一个问题表,一个 ID 字段到 15 和一个正确的答案字段。

问题表:

答案表:

我想知道使用这种方法从问题表中检查我在下面完成的正确答案,但我遇到的问题是将其与存储输入答案的另一个表匹配。

问题是操作员习惯于说“等于”其他东西并查看它们是否匹配。这就是 1 个选择查询中的全部内容。

问题表

SELECT fieldname (rightanswer) FROM tablename (Questions)  WHERE ID = 1;
SELECT fieldname FROM tablename WHERE Id = 2;

上面的代码正在工作并且正在执行我希望它执行的第一部分,即从“问题”表中选择“正确答案”,第一个问题 ID 为“1”现在需要帮助匹配/比较的第二部分到哪里输入的答案在“答案”表中,以“inputanswer1”开头

查找“问题”表中的“正确答案”是否与“答案”表中的“输入答案 1”匹配。

???答案表

SELECT fieldname FROM tablename;

标签: mysql

解决方案


下面的查询假定您使用每个问题中的 ID 列将问题表行与答案表行相关联。但是您将答案中的 ID 列显示为主键。

只需将 ON 子句编辑为正确的关系。

正如我在上面的评论中提到的,rightanswer问题表中的列应该与您比较的列具有相同的类型(IOW,varchar(255))

SELECT
    a.`ID`,
    a.`question`,
    a.`rightanswer`,
    b.`ID` as `aID`,
    b.`inputanswer1`,
    b.`inputanswer2`,
    b.`inputanswer3`,
FROM `questions` a 
JOIN `answers` b
ON a.`ID` = b.`ID`
WHERE a.`rightanswer` = b.`inputanswer1`

更新: OP 提供的表模式

CREATE TABLE `quiz`.`Questions` ( 
    `Questions_ID` INT NOT NULL AUTO_INCREMENT,
    `question` VARCHAR(255) NOT NULL,
    `rightanswer` VARCHAR(255) NOT NULL,
    PRIMARY KEY (`Questions_ID`)
)
ENGINE = MyISAM; 

CREATE TABLE `quiz`.`Answers` ( 
    `Questions_ID` INT NOT NULL AUTO_INCREMENT,
    `inputanswer1` VARCHAR(255) NOT NULL,
    `inputanswer2` VARCHAR(255) NOT NULL,
    `inputanswer3` VARCHAR(255) NOT NULL,
    `inputanswer4` VARCHAR(255) NOT NULL,
    `inputanswer5` VARCHAR(255) NOT NULL,
    PRIMARY KEY (`Questions_ID`)
) 
ENGINE = MyISAM;


推荐阅读