php - 根据sql结果显示行

标签 php mysql sql

我在我的 WordPress 网站中使用火山口表格来收集我们俱乐部新入场人数的数据。表单按预期运行。我正在尝试查看打开的应用程序列表和查看它们的页面。以下是我的 SQL 表 tor 条目 (cf_form_entries)。

+----+-----------------+--------+
| ID | Form ID         | Status |
+----+-----------------+--------+
| 1  | CF5852c23e56b1d | active |
+----+-----------------+--------+
| 2  | CF5852c23e56b1d | active |
+----+-----------------+--------+
| 3  | CF5852c23e56b1d | active |
+----+-----------------+--------+

下表包含了表单提交的所有信息(cf_form_entry_values);

+----+----------+---------------+--------------------+
| id | entry_id |     slug      |       value        |
+----+----------+---------------+--------------------+
|  1 |        1 | branch        | Branch A           |
|  2 |        1 | full_name     | asdasd asdasd      |
|  3 |        1 | email_address | b2196363@trbvn.com |
|  4 |        1 | phone         | 111111111          |
|  5 |        2 | branch        | Branch A           |
|  6 |        2 | full_name     | Full Name          |
|  7 |        2 | email_address | asdasd@asdas.com   |
|  8 |        2 | phone         | 111111111          |
|  9 |        3 | branch        | Branch A           |
| 10 |        3 | full_name     | Namwe              |
| 11 |        3 | email_address | wert@wertwert.com  |
| 12 |        3 | phone         | 111111111          |
+----+----------+---------------+--------------------+

我可以运行一个简单的select 查询并获取给定分支的打开的应用程序详细信息,内部连接表。

SELECT cf_form_entries.id,
       cf_form_entries.form_id,
       cf_form_entries.status,
       cf_form_entry_values.slug,
       cf_form_entry_values.value
FROM cf_form_entry_values
  INNER JOIN cf_form_entries
     ON cf_form_entry_values.entry_id = cf_form_entries.id
WHERE cf_form_entry_values.slug = 'branch'
   AND cf_form_entry_values.value LIKE '%Branch A%'

以上查询结果如下表;

+----+-----------------+--------+--------+----------+
| id |     form_id     | status |  slug  |  value   |
+----+-----------------+--------+--------+----------+
|  1 | CF5852c23e56b1d | active | branch | Branch A |
|  3 | CF5852c23e56b1d | active | branch | Branch A |
+----+-----------------+--------+--------+----------+

我的问题是,如何显示(回显)所选表格的其他详细信息,例如名称、电子邮件地址等?

因此,我的最终结果应在表格中显示打开的应用程序的所有详细信息。 (不只是分支名称)

我尝试了一个 while 循环。但我只能回显分支名称,因为它们是我内部联接表中唯一选择的数据。

最佳答案

一种方法是条件聚合:

SELECT fe.id, fe.form_id, fe.status,
       MAX(CASE WHEN fev.slug = 'branch' THEN fev.value END) as branch,
       MAX(CASE WHEN fev.slug = 'full_name' THEN fev.value END) as full_name,
       . . .
FROM cf_form_entries fe INNER JOIN
     cf_form_entry_values fev
     ON fev.entry_id = fe.id
GROUP BY fe.id, fe.form_id, fe.status;

这种方法的好处是添加一个新值只需要在 SELECT 中添加一个新表达式。

关于php - 根据sql结果显示行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41198524/

相关文章:

java - 将 GPS 坐标循环写入 SQL 服务器

php - 如何使用 Composer 获取多个 vendor 目录?

php - 执行过多的未定义索引或 undefined variable 错误会影响服务器性能

mysql - mysql中的存储过程变量

php - 仅显示数据库中超过两个月的条目

c# - 如何将相同的值从列表框插入数据库

php - 无法显示带有数据 URI 的 BLOB 图像

java - 是什么让其他语言在快速开发方面比 Java 更快?

mysql - MySQL 5.6 的 Laravel 性能问题

PHP MySQL 查询数据库和 WHERE 子句