【问题标题】:Combining Two tables and displaying data with count in sql php在sql php中组合两个表并显示带有计数的数据
【发布时间】:2014-08-27 12:56:31
【问题描述】:

我有两个表,分别是 table1 和 table2,它在两个表中都包含 Field1、Field2、Field3。我需要结合并显示两个表中不同 field2 值的 Field3 的计数。

例如:

Field1 Field2 Field3
1 | India  | VERIFIED
2 | US     | VERIFIED
3 | India  | VERIFIED

我需要像 Field2 的计数这样的输出,其中 Field3 = 已验证

印度 (2) 美国 (1)

我对 join 语句一无所知,我是 SQL PHP 的初学者。 任何帮助表示赞赏。

【问题讨论】:

  • 你的第二张桌子在哪里?
  • 两个表在同一个数据库下。两者具有相同的列名。我需要两个表中的字段值和计数。

标签: php mysql sql join


【解决方案1】:
SELECT Field2, count(Field2)
FROM (SELECT * FROM table1  UNION ALL SELECT * FROM table2) AS t
WHERE t.Field3 = 'VERIFIED'
GROUP BY Field2

UNION将两个sql查询结果合二为一。您也可以在两个查询期间应用您的过滤器。

但是有两个具有完全相同字段的表表示糟糕的数据库设计 - 您可能会阅读一些关于 database normalization 的信息,以获得良好关系数据库设计的线索。

更新:关于 paqogomez 的小提琴,我发现了一个小问题。我需要添加关键字 ALL 以避免 SQl 将我的结果视为集合并删除双重条目(如果两个表中的两个条目完全相同)默认应用 DISTINCT 关键字。

【讨论】:

  • 这确实很有效。这是fiddle(我正在研究这个确切的解决方案,但你打败了我。)+1
  • 你的小提琴向我展示了我仍然错过的东西 - 我将我的解决方案更新为 UNION ALL
  • 感谢您的解决方案。我用小提琴检查了它。它工作得很棒。但是当我集成到我的本地 php 页面时,它会引发一些错误。我觉得它只是我的结局。我需要在 sql 语句中添加任何双引号或单引号吗?
  • 首先是什么错误......其次,mysql喜欢在其字段名称周围使用反引号,这将是我的第一个猜测。
  • 我通过分配给一个变量并解析到 mysqli_query() 来执行这个 sql 语句。 $rs_city = mysqli_query($con,$sql);我已经有 $con 连接了。
【解决方案2】:

您可以通过尝试以下方式仅使用 1 个表来实现此结果:-

SELECT COUNT(*) FROM TABLE1 WHERE FIELD3 = 'VERIFIED' GROUP BY FIELD2;

这可能对你有帮助。

【讨论】:

  • 他要从两张表中数出来
  • 但是只使用一张表就可以达到预期的效果。 thwn 我们为什么要使用另一个 1。
  • 我已经从单表读取。现在我想从两个或多个表中读取。
  • 那么您必须与我们分享第二张表的一些示例数据。没有它,一切都是不可能的。
  • 当他说两张表相同时,我认为很容易说我们非常接近可能。
【解决方案3】:
SELECT count(Field2) AS total,Field2
FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t2) AS t
WHERE t.Field3='VERIFIED'
GROUP BY t.Field2;

【讨论】:

  • 他要从两张表中数出来。
猜你喜欢
  • 2013-01-31
  • 2015-12-21
  • 2016-10-08
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 2018-10-09
  • 2012-12-29
相关资源
最近更新 更多