Php 子查询不';行不通
以下是我的模式: Table "Questoes"; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | id_quest | int(11) | NO | | NULL | | | questao | varchar(255) | NO | | NULL | | | nivel | int(11) | NO | | NULL | | | tipo | varchar(255) | NO | | NULL | | +----------+--------------+------+-----+---------+----------------+ Table "Respostas"; +----------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | id_quest | int(11) | NO | | NULL | | | resposta | varchar(255) | NO | | NULL | | | r_valido | enum('0','1') | NO | | NULL | | +----------+---------------+------+-----+---------+----------------+ 我需要的是来自表Php 子查询不';行不通,php,mysql,Php,Mysql,以下是我的模式: Table "Questoes"; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | i
Questoes
的字段questao
,以及来自表respostas
的字段resposta
,其中字段r_valido=1
。
字段
resposta
有4个结果,只有一个是有效的,换句话说,如果字段r_valido=1
您的查询应该如下所示:
SELECT q.questao, r.resposta FROM questoes AS q JOIN respostas AS r ON r.id_quest = q.id_quest WHERE q.id_quest IN (19,20,21) AND r.r_valido = "1"
我还发现了在查询中使用1
而不是“1”
时,是什么导致了这个奇怪的错误:
我们强烈建议您不要使用数字作为枚举
值,因为它不会通过适当的
TINYINT或SMALLINT类型,并且很容易将字符串和
如果引用,则基础数值(可能不相同)
枚举值不正确
我没有完全理解你,但我想这就是你想要的:
SELECT q.questao, r.resposta
FROM questoes as q
INNER JOIN respostas as r
ON q.id_quest=r.id_quest
WHERE
q.id_quest IN (19,20,21) AND
r.r_valido = '1'
您能否提供一个示例数据集作为SQL FIDLE,并获得预期的结果?这些是大型表吗?也许你可以把这些表/列名翻译成英语,我不懂西班牙语?问题还在继续。。。没有返回正确的值。。。查询返回的值为“r_valido”=0立即重试-在数字1的周围有“r_valido”,我在localhost上尝试了类似的方法,它似乎有助于我得到字段“resposta”的4个结果(答案),正确答案是当字段“r_valido”等于1时。您的查询返回字段“r_valido”等于0的值。
SELECT q.questao, r.resposta
FROM questoes as q
INNER JOIN respostas as r
ON q.id_quest=r.id_quest
WHERE
q.id_quest IN (19,20,21) AND
r.r_valido = '1'