2015-05-29 2 views
1

У меня есть две таблицы 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(). Единственный способ показать страну - когда кто-то в настоящее время, путешествуя в этой стране с начала и окончания. Кроме того, в таблице клиентов говорится, что Kint - blf = 0, а lastCountry - Таиланд. Это означает, что Кинт в настоящее время находится в Таиланде, но у него нет записи в путешествиях (blf = 0). Тем не менее, путешествие Кинта в Таиланд считается 1.

Как составить список, в котором указаны Мьянма (1), Таиланд (1) и Польша (1). PHP-код, который генерирует все страны, посещаемые в настоящее время, с соответствующим количеством посетителей на нем.

ответ

0

В запросе вы использовать предложение профсоюза присоединиться результаты двух таблиц подсчета числа найдено:

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

затем обработать массив, чтобы показать счетчики для каждой страны.

Смежные вопросы