【问题标题】:Sub-query doesn't work子查询不起作用
【发布时间】:2013-09-04 06:34:52
【问题描述】:

这是我的架构:

表“问题”; +----------+--------------+------+-----+---------+ ----------------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +----------+--------------+------+-----+---------+ ----------------+ |编号 |整数(11) |否 |优先级 |空 |自动增量 | | id_quest |整数(11) |否 | |空 | | |问题 | varchar(255) |否 | |空 | | |尼维尔 |整数(11) |否 | |空 | | |提示 | varchar(255) |否 | |空 | | +----------+--------------+------+-----+---------+ ----------------+ 表“回复”; +----------+----------------+------+-----+--------- +----------------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +----------+----------------+------+-----+--------- +----------------+ |编号 |整数(11) |否 |优先级 |空 |自动增量 | | id_quest |整数(11) |否 | |空 | | |回复 | varchar(255) |否 | |空 | | | r_valido |枚举('0','1') |否 | |空 | | +----------+----------------+------+-----+--------- +----------------+

我的查询是:

SELECT q.questao, r.resposta 
FROM questoes q, respostas r 
WHERE q.id_quest IN (19,20,21) 
    AND q.id_quest=r.id_quest 
    AND r.r_valido = ( SELECT resposta FROM respostas WHERE r_valido= 1 )

我需要的是表 Questoes 中的字段 questao 和表 respostas 中的字段 resposta 其中字段 r_valido = 1resposta字段有4个结果,只有一个有效,也就是说r_valido = 1字段在哪里。

【问题讨论】:

  • 您能否提供一个示例数据集作为 SQL Fiddle,并获得预期结果?
  • 那些是大桌子吗?也许你可以把这些表/列名翻译成英文,我听不懂西班牙语?

标签: php mysql


【解决方案1】:

我没有完全理解你,但我认为这就是你要找的:

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'

【讨论】:

  • 我对字段“resposta”有 4 个结果(答案),正确答案是字段“r_valido”等于 1。您的查询返回字段“r_valido”等于的值0.
【解决方案2】:

您的查询应如下所示:

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 类型,很容易混淆字符串和 如果您引用,则基础数值(可能不一样) ENUM 值不正确

【讨论】:

  • 问题继续...没有返回正确的值...查询返回 "r_valido" = 0 的值
  • 现在试试 - 用 " 包围数字 1,我在 localhost 上尝试了类似的东西,它似乎有帮助
猜你喜欢
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多