2014-07-07 53 views
1

我有两个表作为table1和table2,它包含两个表中的Field1,Field2,Field3。我需要结合并显示来自两个表的不同field2值的Field3的计数。结合两个表和显示数据与计数sql php

例如:

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

我需要像与字段2值字段2的数,其中字段3 =验证

印度输出(2) 美国(1)

我没有任何关于加入声明的想法,我是SQL PHP的初学者。 任何帮助表示赞赏。

+0

你的第二张桌子在哪里? – Sadikhasan

+0

两个表在同一个数据库下。两者具有相同的列名称。我需要两个表中的字段值和计数。 – user3391693

回答

0
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; 
+1

他想从两个表中数出来。 – Yannici

0

您可以通过尝试艾克本的财产以后只用1台实现这一结果: -

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

这可能会对你有所帮助。

+1

他想从两个表中计算 – Sadikhasan

+0

,但只需使用1个表即可达到所需结果。为什么我们应该使用另一个1. –

+0

我已经从单个表中读取。现在我想从两个或多个表中读取。 – user3391693

2
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关键字。

+1

这确实工作得很好。这里是一个[小提琴](http://sqlfiddle.com/#!2/d2a7d/2)(我正在研究这个确切的解决方案,但是你打败了我。)+1 – paqogomez

+0

你的小屁股向我展示了我还在错过 - 我更新了我的解决方案,以'联盟所有' – Daniel

+0

感谢您的解决方案。我在小提琴中检查了它。它工作真棒。但是,当我融入我的本地PHP页面,它会引发一些错误。我觉得它只是我的目标。我是否需要在sql语句中添加任何双引号或单引号? – user3391693