【发布时间】:2013-12-13 21:39:33
【问题描述】:
这个问题以前可能有人问过,但我真的不知道用什么词来搜索。
我有一个 mysql 数据库,它有一个包含 3 列 [ID、fieldName 和 fieldValue] 的表,用于描述另一个表中对象的属性。 ID 字段存储另一个表中对象的外键,fieldName 和 fieldValue 存储标题、描述、文件大小和摘要等内容。
我正在尝试编写一个查询,该查询返回其中 fieldName 和 fieldValue 对匹配已知值并且返回的行 ID 在另一行中有另一个不同的 fieldValue 的行。现在我用两个查询和一个 if 语句来完成它。这是 sudo 代码:
$result = SELECT * FROM table_a WHERE fieldName = 'title' and fieldValue = 'someTitle'
$test = SELECT * FROM table_a WHERE fieldValue = 'someValue' and id = '{$result['id']}'
if ($test) {
/* Result Found */
}
【问题讨论】:
-
两者都没有 - 鉴于您展示的示例,您将永远不会得到任何结果。
table_a.fieldValue不能同时等于 'someTitle' 和 'someValue'。请展示实际示例以获得帮助。您可能需要一个联接,或者只是一个基本查询,具体取决于您实际尝试执行的操作。 -
fieldName 和 fieldValue 是两个不同的列,它们可以同时具有不同的值
-
但是 fieldValue 被使用了两次。看看你写的查询。您实际上是在做:
WHERE fieldName = 'title' and fieldValue = 'someTitle' and fieldValue = 'someValue',它永远不会返回任何行。 (where a=1 and b=2 and b=3) 因此,我建议您向我们展示一些真正的价值观。 -
不,两条 SQL 语句是单独的查询。第一个用于获取ID号,第二个用于查看具有该ID的记录在fieldValue中是否具有一定的值。
-
你真的看不出问题吗?向我们展示真实的列名。我意识到您正在运行两个查询。但是,如果您选择其中 fieldName = 'title' 和 fieldValue = 'someTitle' 的行,并且假设它的 ID 为 5。然后您选择 where id = 5 和 fieldValue = 'someValue',您将永远不会返回一行。