从同一数据库行获取多个值

时间:2018-10-25 07:10:13

标签: php mysql

感谢您抽出时间来阅读我的问题。我在我的网站(Wordpress wp_forms)上有一个表单,该表单会生成一个数据库条目wp_wpforms_entry_fields,其中存储了该表单的条目。我的表单包含三个字段(姓名,电子邮件地址和是或否问题)。

在我的数据库中,这将创建下表: enter image description here

我想做的是从field_id1获得3。因此,使用我的SQL可以执行以下操作:

$query = "SELECT * 
    FROM wp_wpforms_entry_fields 
    WHERE field_id = 1";

但这仅从field_id 1中选择值,我希望也从WHERE field_id 3 = Yes中获得值。这样,我就可以显示对该问题给出肯定答案的人的名字。

我不知道从哪里开始,这可能没有我做的困难。但要这样做:

$query = "SELECT * 
    FROM wp_wpforms_entry_fields 
    WHERE field_id = 1 
        AND field_id = 3 
        AND IS Yes"; 

肯定不起作用...再次感谢您的阅读。

PS。由于连接有效,我省略了数据库连接规则,我可以根据第一个SELECT检索数据。但是我似乎无法将是与否分开。

1 个答案:

答案 0 :(得分:1)

您必须将表连接到自身:

select f1.value as name
from wp_wpforms_entry_fields f1
    inner join wp_wpforms_entry_fields f3 on (f1.entry_id = f3.entry_id and f3.field_id = 3)
where f1.field_id = 1 and f3.value = 'Yes'

以纯文本格式,您要查找条目的名称,其中field_id 3的行与entry_id相同,并说'Yes'

或者,使用子查询:

select value as name
from wp_wpforms_entry_fields f1
where field_id = 1
    and entry_id in (
        select entry_id from wp_wpforms_entry_fields f3 where field_id = 3 and value = 'Yes'
    )

在这里,我们选择在字段3中为“是”的entry_id的列表,然后为entry_id在第一个列表中的那些条目选择字段1的值。 / p>