php - 搜索多行mysql

标签 php mysql

我有两个表 projects 和 projects_meta

   Projects
    --------------------
    id  name
    --------------------
    1   A    
    2   B
    3   C

projects_meta
------------------------------------------------------------
id    project_id   additional_field  additional_value
------------------------------------------------------------
1     1            verified_by       Erik
2     1            approved_by       Dave
3     2            verified_by       Riyaj
4     2            approved_by       Mike
5     3            verified_by       Erik
6     3            approved_by       Dave

现在我想要连接两个表的输出,以找出由 Erik 验证并由 Dave 批准的项目

SELECT * 
FROM projects a 
INNER JOIN projects_meta b 
ON a.id = b.project_id 
WHERE b.additional_field= 'verified_by' 
AND b.additional_value = 'Erik' 
AND b.additional_field= 'approved_by' 
AND b.additional_value = 'Dave'

上面的查询似乎适用于单个条件,但当有更多条件时,它返回空结果。

提前致谢

最佳答案

您需要 JOIN 两次到 projects_meta 表:

SELECT * 
FROM projects a 
INNER JOIN projects_meta b ON a.id = b.project_id 
INNER JOIN projects_meta c ON a.id = c.project_id 
WHERE b.additional_field= 'verified_by' AND b.additional_value = 'Erik' AND 
      c.additional_field= 'approved_by' AND c.additional_value = 'Dave'

上述查询返回所有链接到“verified_by Erik”“approved_by Dave” 记录的项目。

关于php - 搜索多行mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39406063/

相关文章:

mysql - Node mysql pool.query 等待结果

javascript - 在页面的上端显示 'Available in AppStore too'

javascript - 如何在 jQuery 中隐藏加载的注释

mysql - 根据重音查找重复字段

php - 无法使用 PHP 更新 MySql 中的日期字段

mysql - 删除重复的 SQL,同时忽略键并选择指定列的最大值

php - 我可以用什么代替 'readonly' 作为表单中的复选框?

php - 正则表达式在 PHP 中的工作方式与 C# 中的工作方式不同

php - Mysql 中一对多所需的示例

php - 数据库表未更新