我有两个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
然后处理该数组以显示每个国家/地区的计数。