我有两个MySQL表,它们要在特定条件下相互取数据。

表1:客户

-----------------------------
ID | Name | lastCountry | blf
1  | Jack | NONE        | 1
2  | Idan | NONE        | 1
3  | Kint | Thailand    | 0
----------------------------


表2:旅行

----------------------------
id | userID | fromCountry | toCountry |  startTime  | endTime
1  |   1    | Canada      | Myanmar   |  2015-29-05 | 2015-31-07
2  |   2    | Australia   | Poland    |  2015-29-05 | 2015-31-06
----------------------------


我该如何列出缅甸(1),泰国(1),波兰(1)?

请注意,在表旅行中,toCountry是缅甸和波兰。这两个记录都有一个startTime = CURDATE()。
显示国家/地区的唯一方法是,当某人当前从startTime和endTime开始在该国家/地区旅行时。另外,customers表还说,Kint是blf = 0,而lastCountry是泰国。这意味着,金特目前在泰国,但他的旅行记录没有(blf = 0)。但是,金特(Kint)到泰国的旅行计为1。

我该如何列出缅甸(1),泰国(1)和波兰(1)。一个PHP代码,生成当前正在访问的所有国家,并带有相应数量的访问者。

最佳答案

在查询中,您可以使用union子句将两个表的结果连接起来,计算找到的数字:

SELECT count(*) as lastCountryCount, lastCountry
FROM Customers
WHERE blf=1
GROUP BY lastCountry
UNION
SELECT count(*) as toCountryCount, toCountry
FROM Travels
GROUP BY toCountry


然后处理该数组以显示每个国家/地区的计数。

09-27 17:14