复杂的MySQL从表到表获取关系和条件

时间:2015-05-29 12:30:39

标签: php mysql

我有两个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()和endTime> = CURDATE()。 显示某个国家/地区的唯一方法是当某人当前从startTime和endTime在该国家/地区旅行时。此外,customers表说,Kint是blf = 0而lastCountry是泰国。这意味着,Kint目前在泰国,但他在旅行中没有记录(blf = 0)。但是,Kint到泰国的旅行计为1。

如何列出缅甸(1),泰国(1)和波兰(1)的清单。一个PHP代码,生成当前正在访问的所有国家/地区,其中包含相应数量的访问者。

1 个答案:

答案 0 :(得分:0)

在您的查询中,您使用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

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